Autofixture: Pertanyaan: atur tiruan dependensi bersarang dengan AutoMoqCustomization

Dibuat pada 15 Apr 2016  ·  5Komentar  ·  Sumber: AutoFixture/AutoFixture

Saya sudah mencoba menggunakan AutoMoqCustomization untuk secara otomatis mengejek grafik objek dengan dependensi bersarang dan hasilnya tidak seperti yang saya harapkan. Berikut kode pengujiannya, dapatkah seseorang memberi tahu saya mengapa setelah membekukan Mock<IObject> ada situasi di mana IObject dibuat oleh Moq dibuat oleh perlengkapan?

[TestClass]
    public class MyTestClass
    {
        [TestMethod]
        public void Test()
        {
            var fixture = new Fixture().Customize(new AutoMoqCustomization());

            var objMock = fixture.Freeze<Mock<IObject>>();
            var sut = fixture.Create<Dependant2>();

            sut.Obj.Should().BeSameAs(objMock);
        }
    }

    public interface IObject { }

    public interface IDependant { IObject Obj { get; } }

    public class MyObject : IObject { }

    public class Dependant2
    {
        public Dependant2(IDependant dependant)
        {
            Obj = dependant.Obj;
        }

        public IObject Obj { get; }
    }

Komentar yang paling membantu

AutoMoqCustomization membuat objek tiruan tetapi tidak mengaturnya.

Jika Anda ingin anggota tiruan diatur, pertimbangkan untuk menggunakan AutoConfiguredMoqCustomization sebagai gantinya. Ini akan a) mengatur properti mock's settable publik dan b) metode penyiapan/pengindeks untuk mengembalikan (dan memoize) nilai yang dihasilkan dengan malas oleh fixture

Ada dua batasan. Itu tidak mengatur:

  • metode dengan parameter ref
  • metode umum

Info lebih lanjut di bagian bawah lembar contekan .

Semua 5 komentar

AutoMoqCustomization membuat objek tiruan tetapi tidak mengaturnya.

Jika Anda ingin anggota tiruan diatur, pertimbangkan untuk menggunakan AutoConfiguredMoqCustomization sebagai gantinya. Ini akan a) mengatur properti mock's settable publik dan b) metode penyiapan/pengindeks untuk mengembalikan (dan memoize) nilai yang dihasilkan dengan malas oleh fixture

Ada dua batasan. Itu tidak mengatur:

  • metode dengan parameter ref
  • metode umum

Info lebih lanjut di bagian bawah lembar contekan .

Terima kasih untuk respon cepat! Saya mencoba AutoConfiguredMoqCustomization dengan metode alih-alih properti di IDependant dan itu menghormati instance yang dibekukan. Apakah ada cara untuk membuat properti yang tidak dapat disetel agar dihormati juga? Dengan Moq, seseorang dapat mengatur pengambil properti bahkan ketika tidak ada penyetel.

Sebenarnya, tidak apa-apa. Itu juga mengatur properti get-only, ya ampun.

Saya juga ingat bug di Moq yang mengganggu AutoMoq, membuatnya tidak dapat mengatur properti get-only. Setidaknya ketika saya melihat ini, Anda harus menggunakan Moq versi 4.2.1409.1722 atau lebih rendah (detail di #434). Mungkin bug telah diperbaiki di versi Moq yang lebih baru, saya tidak yakin.

Mencoba versi Moq tertinggi yang lebih rendah dari 4.2.1409.1722 dan Anda benar, ini juga berfungsi untuk properti get-only. Bug Moq tidak diperbaiki di versi yang lebih baru, karena saya mencobanya dengan yang terbaru. Terima kasih banyak atas bantuan Anda

Apakah halaman ini membantu?
0 / 5 - 0 peringkat