[英]How Can I assert /verify a Moq Protected Method?
我有一個應該返回true的私有方法。我使用Nunit和MOQ所以我有如下:
[TestFixture]
public class CustomerTestFixture
{
var customerMock=new Mock<ICustomer>()
customerMock.Protected().Setup<bool>("CanTestPrivateMethod").Returns(true);
// How do I assert it now since I cannot do
customerMock.Verify //Verify does not exists.
}
無法在谷歌上找到任何告訴你如何測試它的東西。 你可以看到我可以為它設置但不能斷言。
我錯過了明顯的嗎? 非常感謝。
您不想在模擬上測試方法。 您想要在實際類的實例上測試該方法。 在類上測試私有方法的方法是使用訪問器。 請注意,VS會自動為您提供這些,或者您可以使用反射“自己動手”。 對於內部方法,還可以在AssemblyInfo.cs文件中將InternalsVisibleTo設置為測試項目。
[TextFixture]
public class CustomerTestFixture
{
var customer = new Customer();
var accessor = new Customer_Accessor( new PrivateObject( customer ) );
Assert.IsTrue( accessor.CanTestPrivateMethod() );
}
模擬對象時,意圖是該對象被用作實際測試類的依賴項。 因此,能夠設置模擬對象以返回特定值就足夠了。 您在使用依賴項的類上執行斷言,而不是在mock類上執行斷言。 驗證步驟確保您的測試類根據您建立的期望調用模擬對象上的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.