簡體   English   中英

如何斷言/驗證Moq保護方法?

[英]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.

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