0
我有一個方法,下面類,我想用起訂量來測試:起訂量:驗證是否空洞被稱爲沒有實際執行其代碼
public class TestClass: ITestClass
{
// ...
public void ProcessAutomaticFillRequest(FillRequestParamDataContract fillRequestParam)
{
//...
NotificationServer.Instance.Publish(channel, fillRequestParam);
}
在我的測試中,我有以下幾點:
[TestMethod]
public void CanFillRequest()
{
// ...
_notificationServer.Setup(ns => ns.Publish(It.IsAny<string>(), It.IsAny<FillRequestParamDataContract>())).Verifiable();
_TestClass.ProcessAutomaticFillRequest(fillRequestParam);
_notificationServer.Verify(ns => ns.Publish(It.IsAny<string>(), It.IsAny<FillRequestParamDataContract>()), Times.Once);
}
問題是我想測試Publish是否被調用,但實際上沒有在Publish方法中運行代碼,因爲它有太多依賴,我無法模擬。我認爲把Verifiable()會做到這一點,但我得到了依賴關係拋出的異常。我想要做的就是測試發佈的調用是否完成,但是在測試期間沒有運行它的代碼。
我不明白,爲什麼我必須將方法ProcessAutomaticFillRequest添加到測試類?這是我正在測試的方法(「Act」是AAA的一部分)。而且只有一個參數FillRequestParamDataContract。無論如何,你的代碼幫助我提前一點,因爲現在我得到一個錯誤,說當我期望它被調用一次時,該方法被調用了0次。這很奇怪,因爲當我調試測試時,斷點顯然會到達執行發佈的那一行。但測試告訴我它被調用了0次。有沒有我沒有看到的東西? – Ray
我無法測試,因爲沒有使用所有類。我剛剛在答案中更新了測試。只要確保將字符串更改爲任何類型的通道。 –