Hai,
Untuk saat ini saya hanya dapat mengakses perlengkapan seperti ini.
[Theory, AutoData]
public void Dummy(string dummy)
{
MethodBase method = MethodBase.GetCurrentMethod();
IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;
Assert.Equal(dummy, dummy);
}
Dan saya mendapatkan 'AutoDataAttribute.Fixture' adalah peringatan usang.
Apakah ada cara yang lebih baik untuk mengakses perlengkapan yang dibuat di atribut AutoData. Saya ingin mencampur parameter dan pembuatan manual dan injeksi.
Terima kasih
Hai,
Tentu, cukup minta perlengkapan yang mendasarinya untuk menyelesaikan instance IFixture
dan itu akan kembali sendiri:
c#
[Theory, AutoData]
public void Dummy(string dummy, IFixture fixture)
{
}
Apakah itu berhasil untuk Anda? :mengedip:
Ya, itu benar-benar cara yang lebih baik.
Bisakah Anda memasukkan ini ke wiki AutoData?
Saya telah mencari di mana-mana untuk menemukan cara melakukan ini.
Tidak mengira wadah IOC membuat IFixture terdaftar.
Terima kasih banyak!
Mengapa Anda mencoba mendaftar untuk perlengkapan dengan IoC? Dalam pengalaman saya itu tidak pernah diperlukan
Sebagian besar untuk meminimalkan parameter metode pengujian untuk pengaturan antarmuka berulang yang kompleks.
[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.
}
Saya punya contoh yang lebih sederhana
aku kamu lebih suka ini
[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
Assert.Equal(String.Empty, String.Empty);
}
atas ini
[Fact]
public void Dummy2()
{
IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());
Assert.Equal(String.Empty, String.Empty);
}
Sebagian besar untuk meminimalkan parameter metode pengujian untuk pengaturan antarmuka berulang yang kompleks.
Setuju, saya memiliki penggunaan serupa dalam tes. Satu-satunya perbedaan adalah saya lebih suka mengawali metode pengulangan tambahan tersebut dengan When()
, jadi tes terlihat seperti berikut:
c#
public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture)
{
// arrange
WhenProviderReturnsOnlyInitializedEntities(provider, fixture);
.....
}
Tapi pada dasarnya idenya tetap sama
Menutup yang ini karena tidak ada lagi tindakan yang diperlukan.
Bisakah Anda memasukkan ini ke wiki AutoData?
@malyemire1 Saya akan membuat situs dokumen di suatu tempat di masa depan. Namun, jangan ragu untuk menambahkan contoh ini ke wiki kami
Komentar yang paling membantu
Ya, itu benar-benar cara yang lebih baik.
Bisakah Anda memasukkan ini ke wiki AutoData?
Saya telah mencari di mana-mana untuk menemukan cara melakukan ini.
Tidak mengira wadah IOC membuat IFixture terdaftar.
Terima kasih banyak!