2

だから私はクラスを持っているとしましょう

class JustAClass() {
  Stirng justAField = "nothing";
}

今、私はこのクラスをテストしていて、それをモックに入れています

JustAClass realClass = newJustACLass();
JustAClass spyClass = Mockito.spy(realClass);

spyClass.justAField = "something"

質問は次のとおりrealClass.justAFieldです。今等しいのは何ですか?

編集: @fge への応答 これは失敗しませんでした。

    CSVExport spyClass = Mockito.spy(testClass);
    FileOutputStream wFile = Mockito.mock(FileOutputStream.class);

    spyClass.wFile = wFile;

    Mockito.doThrow(IOException.class).when(spyClass).createBlankWorkbook();
    spyClass.export(testEnabledFields);
    Mockito.doThrow(IOException.class).when(wFile).close();
    spyClass.export(testEnabledFields);

では、testClass の wFile は現在のモックですか、それともオリジナルですか?

4

1 に答える 1

1

APIドキュメントからこれを引っ張る

Mockitoは、渡された実際のインスタンスへの呼び出しを委任せず、実際にそのコピーを作成します。したがって、実際のインスタンスを保持して操作する場合、スパイがそれらの相互作用と実際のインスタンスの状態への影響を認識しているとは思わないでください。当然のことながら、スタブ化されていないメソッドがスパイで呼び出され、実際のインスタンスでは呼び出されない場合、実際のインスタンスへの影響は見られません。

于 2014-05-22T18:26:27.567 に答える