Autofixture: Tidak dapat membuat Palsu

Dibuat pada 4 Jun 2018  ·  4Komentar  ·  Sumber: AutoFixture/AutoFixture

Saya sedang dalam proses memperbarui proyek yang saya kerjakan beberapa tahun yang lalu. Dalam prosesnya saya telah memperbarui FakeItEasy dan AutoFixture terbaru.

Saya memiliki 40 tes yang gagal dengan kesalahan yang mirip dengan:

AutoFixture tidak dapat membuat instance dari
FakeItEasy.Fake 1[System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]] karena pembuatan tiba-tiba gagal dengan pengecualian.

Di mana pengecualian dalam melaporkan:
Failed to create fake of type System.Collections.Generic.IList 1[AllOverIt.Evaluator.AoiFormulaTokenProcessorContext]`

Baris yang gagal setara dengan ini:
Fixture.Create<Fake<IList<AoiFormulaTokenProcessorContext>>>();

Sebagai ujian saya mencoba sesuatu yang lebih sederhana:
Fixture.Create<Fake<IList<int>>>();

Ini tidak berhasil jadi saya melihat konstruktor AoiFormulaTokenProcessorContext . Ini terlihat seperti ini:

public AoiFormulaTokenProcessorContext(Func<char, bool, bool> predicate, Func<char, bool, bool> processor)

Setelah membaca di https://github.com/AutoFixture/AutoFixture/issues/984 saya mencoba menambahkan 'GenerateDelegates' ke ini:
Fixture.Customize(new AutoFakeItEasyCustomization {GenerateDelegates = true});

Tapi aku masih punya masalah yang sama.

Karena kode ini berfungsi, saya hanya bisa berasumsi ada perubahan lain yang melanggar di suatu tempat yang belum saya temukan. Berharap seseorang dapat memberikan satu atau dua saran kepada saya.

TIA.

question

Komentar yang paling membantu

Saya mengerti. Dengan pengalaman puluhan tahun yang saya miliki, saya seharusnya tahu lebih baik - saya pernah berada di kapal yang sama dan menanyakan hal yang sama. Terima kasih atas tanggapannya.

Semua 4 komentar

Terima kasih telah berbagi skenario!

Seperti biasa, bolehkah saya meminta Anda untuk memberikan contoh Minimal, Lengkap, dan Dapat Diverifikasi , sehingga saya dapat menyalin-tempelnya untuk menyelidiki alasannya secara mendalam? Iblis sering kali dalam beberapa spesifik, jadi bahkan jika Anda menggambarkan skenario dengan baik, masih bisa terjadi bahwa beberapa detail yang tidak disebutkan penting.

Terima kasih banyak sebelumnya! :lega:

Maaf, saya seharusnya pergi dan membuat proyek lain (mungkin sepasang) - Saya berharap pertanyaan saya mungkin telah mendorong sesuatu yang jelas sebelum saya pergi dan melakukannya karena itu akan melibatkan mengubah metode pembungkus saya menjadi kode AutoFixture / FakeItEasy mentah.

Kabar baiknya adalah saya tampaknya telah memperbaikinya.

Kelas AoiFormulaTokenProcessorContext menyebabkan masalah adalah internal (dalam proyek lain). Ketika saya mengubahnya menjadi public kesalahannya hilang.

Saya sudah memiliki [assembly: InternalsVisibleTo("...")] di file AssemblyInfo.cs tetapi saya baru ingat proyek lama saya juga menyertakan [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] .

Saya tidak ingat apa yang terakhir dilakukan tetapi semua kesalahan sekarang hilang.

Kabar baik masalah ini dikurangi :santai: Itulah alasan saya meminta sampel - selalu lebih mudah ketika faktor lain diisolasi.

Saya tidak ingat apa yang terakhir dilakukan tetapi semua kesalahan sekarang hilang.

Saya tahu :smile: Ini terkait dengan Fakes dan proxy Castle , digunakan di bawah tenda. Yap, jika kelas bersifat internal, maka itu memang harus membantu.

Saya mengerti. Dengan pengalaman puluhan tahun yang saya miliki, saya seharusnya tahu lebih baik - saya pernah berada di kapal yang sama dan menanyakan hal yang sama. Terima kasih atas tanggapannya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

zvirja picture zvirja  ·  8Komentar

Eldar1205 picture Eldar1205  ·  5Komentar

ploeh picture ploeh  ·  7Komentar

zvirja picture zvirja  ·  4Komentar

ecampidoglio picture ecampidoglio  ·  7Komentar