Saya baru mengenal TDD dan xUnit jadi saya ingin menguji metode saya yang terlihat seperti:
List<T> DeleteElements<T>(this List<T> a, List<T> b);
Apakah ada metode Assert yang dapat saya gunakan? Saya pikir hal seperti ini akan menyenangkan
List<int> values = new List<int>() { 1, 2, 3 };
List<int> expected = new List<int>() { 1 };
List<int> actual = values.DeleteElements(new List<int>() { 2, 3 });
Assert.Exact(expected, actual);
Apa ada yang seperti ini?
Dalam versi XUnit (1.5) saat ini, Anda dapat menggunakan
Metode di atas akan melakukan perbandingan elemen dengan elemen dari dua daftar. Saya tidak yakin apakah ini berfungsi untuk versi sebelumnya.
sumber
Dengan xUnit, jika Anda ingin memilih properti dari setiap elemen yang akan diuji, Anda dapat menggunakan Assert.Collection.
Ini menguji hitungan yang diharapkan dan memastikan bahwa setiap tindakan diverifikasi.
sumber
Baru-baru ini, saya menggunakan
xUnit 2.4.0
danMoq 4.10.1
memaketkan aplikasi asp.net core 2.2 saya.Dalam kasus saya, saya berhasil membuatnya berfungsi dengan dua langkah proses:
Mendefinisikan implementasi dari
IEqualityComparer<T>
Teruskan instance pembanding sebagai parameter ketiga ke dalam
Assert.True
metode:Assert.True(expected, actual, new MyEqualityComparer());
Tetapi ada cara lain yang lebih bagus untuk mendapatkan hasil yang sama dengan menggunakan paket FluentAssertions . Ini memungkinkan Anda untuk melakukan hal berikut:
Menariknya, itu
Assert.Equal()
selalu gagal bahkan ketika saya memerintahkan elemen dua daftar untuk mendapatkannya dalam urutan yang sama.sumber