Rumah >pembangunan bahagian belakang >C++ >Bagaimana Mengejek Kaedah Sambungan Menggunakan Moq dengan Berkesan?
Kaedah sambungan mengejek dengan Moq: Panduan lengkap
Kod ujian yang bergantung pada kaedah sambungan boleh menimbulkan cabaran unik, terutamanya jika anda ingin memastikan bahawa kegagalan masa depan kaedah sambungan ini tidak memberi kesan kepada ujian anda. Walaupun Moq tidak secara langsung menyokong kaedah statik yang mengatasi (seperti yang digunakan dalam kaedah sambungan), terdapat penyelesaian yang bijak untuk mencapai ejekan dalam situasi ini.
Tidak seperti kaedah contoh, kaedah statik tidak boleh ditindih atau disembunyikan. Fungsi utama Moq adalah untuk mencipta contoh olok-olok objek, yang pada asasnya tidak termasuk kaedah statik penyasaran.
Helah untuk mengejek kaedah sambungan adalah untuk menyedari bahawa ia pada asasnya hanyalah kaedah statik yang menyamar sebagai kaedah contoh. Untuk melakukan ini kita perlukan:
Berikut ialah contoh cara ini berfungsi:
<code class="language-csharp">// 在实用程序类中定义扩展方法 public static class Utility { public static SomeType GetFirstWithId(this List<SomeType> list, int id) { return list.FirstOrDefault(st => st.Id == id); } } // 创建实用程序类的模拟实例 var mockUtility = new Mock<Utility>(); // 配置模拟以返回我们想要的结果 mockUtility.Setup(u => u.GetFirstWithId(It.IsAny<List<SomeType>>(), 5)).Returns(new SomeType { Id = 5 }); // 设置测试 var listMock = new Mock<List<SomeType>>(); listMock.Setup(l => l.Count).Returns(0); // 此示例中列表中没有实际项目 // 测试的断言 Assert.That(listMock.Object.GetFirstWithId(5), Is.Not.Null);</code>
Dengan mengalihkan kaedah sambungan ke dalam kelas utiliti statik dan mengejek kelas itu sendiri, kami berjaya mengatasi had yang tidak dapat secara langsung mengatasi kaedah sambungan statik. Penyelesaian ini memastikan bahawa ujian anda kekal teguh walaupun kaedah sambungan masa hadapan gagal.
Atas ialah kandungan terperinci Bagaimana Mengejek Kaedah Sambungan Menggunakan Moq dengan Berkesan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!