使用Moq模擬擴充法
在單元測試領域,模擬在隔離依賴項和確保測試穩定性方面起著至關重要的作用。然而,當處理擴展方法時,傳統的模擬技術似乎顯得力不從心。
Moq,一個流行的模擬框架,並不直接支援模擬靜態方法,而靜態方法正是擴展方法的基石。錯誤「對不可重寫成員的無效期望」恰當地總結了這個限制。
考慮以下範例:
<code class="language-c#">public class SomeType { public int Id { get; set; } } var ListMock = new Mock<List<SomeType>>(); ListMock.Setup(l => l.FirstOrDefault(st => st.Id == 5)) .Returns(new SomeType { Id = 5 });</code>
此測試將會失敗,因為Moq無法重寫List
一些替代方法已被提出:
然而,這些方法會引入額外的複雜性,並且在某些情況下可能不切實際。因此,在您的測試策略中,請務必考慮模擬擴充方法的適用性。
以上是如何使用 Moq 有效模擬擴充方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!