首頁 > 後端開發 > C++ > 如何使用 Moq 有效模擬擴充方法?

如何使用 Moq 有效模擬擴充方法?

Barbara Streisand
發布: 2025-01-20 02:07:14
原創
861 人瀏覽過

How Can I Mock Extension Methods Effectively with Moq?

使用 Moq 模擬擴充法:一種替代方法

在測試依賴擴展方法的程式碼時,保持測試穩定性以應對這些方法未來可能出現的故障至關重要。雖然 Moq 的功能不能直接擴展到覆蓋靜態方法,但存在一種變通方法。

替代方法

擴展方法本質上是靜態方法,Moq 無法直接模擬。相反,您可以透過利用特定的類別及其靜態方法來隔離擴充方法的實作。

考慮以下範例:

<code class="language-c#">public static class ExtensionClass
{
    public static int GetValue(this SomeType obj) => obj.Id;
}

public class SomeType
{
    public int Id { get; set; }
}</code>
登入後複製

測試實作

要建立不呼叫擴充方法的模擬,請直接引用靜態類別:

<code class="language-c#">var concreteClassMock = new Mock<ExtensionClass>();
concreteClassMock.Setup(c => c.GetValue(It.IsAny<SomeType>())).Returns(5);</code>
登入後複製

透過定位特定類別的靜態方法,您可以有效地模擬擴充方法的行為,而無需直接依賴擴充方法本身。這確保了測試失敗僅源自於被測類,而不是擴展方法未來可能出現的故障。

以上是如何使用 Moq 有效模擬擴充方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板