Autofixture: Akses ke perlengkapan yang dibuat oleh atribut AutoData.

Dibuat pada 25 Apr 2018  ·  7Komentar  ·  Sumber: AutoFixture/AutoFixture

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

question

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!

Semua 7 komentar

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

Apakah halaman ini membantu?
0 / 5 - 0 peringkat