私の他の質問で答えたように、AutoMoq
デフォルトでは AutoFixture を使用しません。それは問題なく、セットアップと設定を行うことで簡単に解決できますReturnsUsingFixture
。
しかし、それは Auto Fixture Data Theories でセットアップできますか?
そこで、私が呼び出すカスタム AutoDataAttribute があります[MyAutoData]
。そこで、 のような一連のカスタマイズを呼び出してセットアップし、AutoConfiguredMoqCustomization
webapi コントローラーを生成するように構成し、多くのカスタム ジェネレーターを登録します。そのため、ボイラープレート構成のほぼすべてをいくつかの基本的な構成ファイルに引き出すことができました。MyAutoData
システム テスト用の属性も設定されているので、たとえば を要求するId<Account>
と、実際の webapi 呼び出しを使用して新しいアカウントが作成され、有効なアカウント ID が返されます。
AutoMoq
しかし、メソッドの戻り値を設定するためにそれをどのように処理できますか? 次に例を示します。
[Theory, MyAutoData]
public async Task Test(Mock<ICqrsService> mockService, TheRequest request)
{
mockService.Setup(service => service.CreateAsync<TheRequest>(It.IsAny<TheRequest>(), It.IsAny<CancellationToken>()))
.ReturnsAsync(result); // or similar car with ReturnUsingFixture
/* now we can test */
}
他のすべてのケースでは、この種の構成をMyAutoData
(またはそれが呼び出すクラスに) 移動することができました。しかし、AutoMoqの場合、それがどのように機能するかわかりません。フィクスチャを行うことはできません。
AutoFixture がアイテムを生成した後、テスト メソッドに配信される前にセットアップ メソッドをトリガーする方法はありますか? または、常に使用するように AutoMoq の動作をカスタマイズする方法はあります.ReturnsUsingFixture(fixture)
か? それとも、この問題についてすべて間違って考えているだけですか?