2016-05-13 37 views
2

我想弄清楚我在這裏錯過了什麼。我的測試運行良好,但最小起訂量VerifyAll正在拋出異常。MOQ錯誤設置與異步/等待單元測試不匹配

[TestMethod] 
public async Task ActionPlanDataProvider_GetActionPlanReferenceList_ReturnsValid() 
{ 
    try 
    { 
     //Arrange 
     Mock<IActionPlanDataProvider> moqAPlan = new Mock<IActionPlanDataProvider>(); 
     //moqAPlan.Setup(x => x.GetActionPlanReferenceList()).ReturnsAsync(new ActionPlanReferenceList()); 
     moqAPlan 
      .Setup(x => x.GetActionPlanReferenceList("1")) 
      .Returns(Task.FromResult(new ActionPlanReferenceList())); 

     //Act 
     var d = await moqAPlan.Object.GetActionPlanReferenceList("1234123"); 

     //Assert 
     moqAPlan.VerifyAll(); 
    } 
    catch (Exception ex) 
    { 
     string a = ex.Message; 
     throw; 
    } 
} 

以下設置不匹配...

我不知道這是否是因爲異步的方式運行,我的起訂量不看嘲笑對象的方法調用?

+0

的是,當不使用安裝情況。你設置模擬使用'GetActionPlanReferenceList(「1」)',但叫做'GetActionPlanReferenceList(「1234123」)'。所以根據moq你沒有使用設置 – Nkosi

回答

2

安裝程序未使用時會發生這種情況。你設置模擬使用GetActionPlanReferenceList("1")但叫GetActionPlanReferenceList("1234123")

所以根據moq你執行的與你設置的不匹配。

你既可以符合預期的參數,或者嘗試

moqAPlan 
    .Setup(x => x.GetActionPlanReferenceList(It.IsAny<string>())) 
    .Returns(Task.FromResult(new ActionPlanReferenceList())); 

這將讓該方法接受任何字符串奧鋼聯It.IsAny<string>()表達式參數

+0

欣賞關於It.IsAny +1的額外評論。 – GPGVM