私はこの簡単なテストを書こうとしています:
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var postProcessingAction = fixture.Freeze<Mock<IPostProcessingAction>>();
var postProcessor = fixture.Freeze<PostProcessor>();
postProcessor.Process("", "");
postProcessingAction.Verify(action => action.Do());
Verify
チェックは失敗します。
postProcessor.Process のコードは次のとおりです。
public void Process(string resultFilePath, string jobId)
{
IPostProcessingAction postProcessingAction =
postProcessingActionReader
.CreatePostProcessingActionFromJobResultXml(resultFilePath);
postProcessingAction.Do();
}
postProcessingActionReader
コンストラクターによって初期化されるインターフェイス フィールドです。
テストに合格することを期待していますが、失敗しましIPostProessingAction
た。メソッドから返された のインスタンスは、 から返されたインスタンスCreatePostProcessingActionFromJobResultXml
と同じではないことがわかりましたfixture.Freeze<>
。
私の期待は、この Mock オブジェクトを凍結した後IPostProcessingAction
、必要なすべての場所にインターフェイスの基になるモックを挿入し、返されるすべてのモック メソッドIPostProcessingAction
がこの同じオブジェクトを返すようにすることでした。
モック メソッドの戻り値についての私の期待は間違っていますか? モック メソッドが同じ凍結されたインスタンスを返すように、この動作を変更する方法はありますか?