簡體   English   中英

使用Moq模擬'new()'約束

[英]Mocking the 'new()' constraint with Moq

我想測試一個帶有類型簽名的函數

public static void DoSomething<T>(T something)
    where T : class, IInterfaceA, IInterfaceB, new()

它在內部使用new T()

我在為T創建模擬時遇到問題。 感謝另一個問題,我已經找到了一個模擬多個接口的解決方案。 但是,我無法創建滿足new()約束的模擬。 我如何使用Moq解決這個問題?

您有兩種選擇:

  1. 使用無約束模擬框架。 在.NET中,它意味着Isolator或JustMock。 兩者都使用IL編織在運行時注入代碼,並且可以偽造/模擬在生產代碼中創建的對象。
  2. 拆分DoSomething邏輯並使用依賴注入,而不是將對象創建為邏輯的一部分。

在兩者之間進行選擇取決於拆分邏輯的難度,剩下的代碼是否有足夠的“肉”,以及你是否願意支付可以偽造的Mocking框架

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM