Masalah:
XUnit membenarkan membuat ujian berparameter menggunakan atribut InlineData. Walau bagaimanapun, cabaran timbul apabila berurusan dengan parameter kompleks, seperti senarai kelas tersuai.
Jawapan:
XUnit menyediakan pelbagai atribut Data, termasuk MemberData. Dengan melaksanakan sifat yang mengembalikan IEnumerable
ContohData Ahli:
public class MyClass { public string Name { get; set; } } public static void WriteReportsToMemoryStream( IEnumerable<MyClass> listReport, MemoryStream ms, StreamWriter writer) { ... } [Theory, MemberData(nameof(Data))] public void WriteReports(IEnumerable<MyClass> listReport) { using (var ms = new MemoryStream()) { using (var writer = new StreamWriter(ms)) { WriteReportsToMemoryStream(listReport, ms, writer); // ... } } } public static IEnumerable<object[]> Data => new[] { new object[] { new[] { new MyClass { Name = "Item1" } } }, new object[] { new[] { new MyClass { Name = "Item2" } } }, };
Sifat Data menjana tatasusunan objek yang terbilang, di mana setiap tatasusunan sepadan dengan set parameter untuk kaedah WriteReports.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melepasi Parameter Kompleks, Seperti Senarai Kelas Tersuai, kepada Teori XUnit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!