2011-12-02 158 views
2

我有一個靜態的方法嘲笑功能沒有返回預期值

Public Shared Function UpdateGroup(ByVal details As GroupDetails) 
    As ControllerResult 
    Return _methodObject.UpdateGroup(details) 
End Function 

這是重構爲能夠與

Private Shared _methodObject As ISecurityController = 
    New SecurityControllerMethodObject() 

Public Shared Sub OverrideInstance(ByVal controller As ISecurityController) 
    _methodObject = controller 
End Sub 

幫助嘲笑然後在我的測試我有

var moqSecurityController = new Mock<ISecurityController>(); 
    moqSecurityController 
     .Setup(x => x.UpdateGroup(groupDetails)) 
     .Returns(controllerResult); 

SecurityController.OverrideInstance(moqSecurityController.Object); 

如果我在最後一行放置一個斷點,我可以看到groupDetails具有它應該和controllerResult一樣的功能,所以我認爲d期望當函數UpdateGroup被調用時,controllerResult將被返回,這只是一個簡單的類,帶有消息&成功屬性。

但是,我得到的是空/無。

我錯過了什麼?

注意:您可能已經注意到,生產代碼是在VB.NET中,我的測試使用C#。

回答

5

是否因爲您的羣組詳細信息不匹配?

嘗試

var moqSecurityController = new Mock<ISecurityController>(); 
moqSecurityController.Setup(
    x => x.UpdateGroup(It.IsAny<GroupDetails>()) 
).Returns(controllerResult); 
+0

偉大的東西!!!! – kooshka