AutoFixture を使用して最初のテストを作成しました。SUT には次のコンストラクターがあります。
public LoggingService(
IClientDataProvider clientDataProvider, ... other dependencies...)
テスト セットアップには次のコードがあります。
var fixture = new Fixture().Customize(new AutoMoqCustomization());
string ipAddress = "whatever";// fixture.CreateAnonymous<string>();
var clientDataProviderMock = fixture.Freeze<Mock<IClientDataProvider>>();
clientDataProviderMock.Setup(cdp => cdp.IpAddress).Returns(ipAddress);
LoggingService sut = fixture.CreateAnonymous<LoggingService>();
の内容を調べると、注入された のインスタンスのsut
プロパティが「whatever」ではなく null を返すことがわかります。IpAddress
IClientDataProvider
私は何を間違えましたか?
サービスと必要なインターフェイスを空のプロジェクトにコピーすると、モックが期待どおりに機能しました。
実際のプロジェクトのサービスのコンストラクター引数の型であるインターフェイスは、さらに依存関係を持つ 3 つの個別のアセンブリで定義されます。直接参照されたアセンブリにはさらにいくつかのアセンブリが必要だったため、テストの開始時に予期しない「アセンブリを読み込めません」というエラーがいくつか発生しました。したがって、アセンブリの読み込みの問題のようです。
ただし、Moqを使用して手動で作成されたモックオブジェクトを使用してSUTインスタンスを手動で作成するテストのバリエーションを試したところ、テストは期待どおりに機能しました