やあ、
今のところ、私はこのような器具にしかアクセスできません。
[Theory, AutoData]
public void Dummy(string dummy)
{
MethodBase method = MethodBase.GetCurrentMethod();
IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;
Assert.Equal(dummy, dummy);
}
そして、「AutoDataAttribute.Fixture」は廃止された警告です。
AutoData属性で作成されたフィクスチャにアクセスするためのより良い方法はありますか? パラメータと手動作成およびインジェクションを組み合わせたいと思います。
ありがとう
やあ、
確かに、基礎となるフィクスチャにIFixture
インスタンスを解決するように依頼するだけで、selfが返されます。
c#
[Theory, AutoData]
public void Dummy(string dummy, IFixture fixture)
{
}
それはあなたのために働きますか? :ウィンク:
はい、それは本当に良い方法です。
これをAutoDatawikiに入れることができますか?
私はこれを行う方法を見つけるためにどこでも検索しました。
IOCコンテナがIFixtureを登録したとは思いませんでした。
どうもありがとう!
なぜIoCにフィクスチャに登録しようとしているのですか? 私の経験では、それは決して必要ありません
主に、複雑な繰り返しインターフェイス設定のテストメソッドパラメータを最小限に抑えるためです。
[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
//This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
SetupInterfaces(fixture, needed);
//We can now use needed injected in sut.
}
もっと簡単な例があります
私はあなたがこれを好む
[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
Assert.Equal(String.Empty, String.Empty);
}
これ以上
[Fact]
public void Dummy2()
{
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());
Assert.Equal(String.Empty, String.Empty);
}
主に、複雑な繰り返しインターフェイス設定のテストメソッドパラメータを最小限に抑えるためです。
同意します、私はテストで同様の使用法を持っています。 唯一の違いは、これらの補助的な繰り返しメソッドの前にWhen()
を付けることを好むため、テストは次のようになります。
c#
public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture)
{
// arrange
WhenProviderReturnsOnlyInitializedEntities(provider, fixture);
.....
}
しかし、基本的にアイデアは同じです😉
これ以上のアクションは必要ないので、これを閉じます。
これをAutoDatawikiに入れることができますか?
@ malylemire1将来どこかにドキュメントサイトを作成する予定です。 ただし、このサンプルをウィキに自由に追加して
最も参考になるコメント
はい、それは本当に良い方法です。
これをAutoDatawikiに入れることができますか?
私はこれを行う方法を見つけるためにどこでも検索しました。
IOCコンテナがIFixtureを登録したとは思いませんでした。
どうもありがとう!