模拟功能不返回预期值

时间:2011-12-02 12:24:26

标签: c# vb.net unit-testing moq

我有一个静态方法

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,所以我希望在调用Function UpdateGroup时,将返回controllerResult,这只是一个简单的类消息&amp;成功属性。

然而,我得到的是Null / Nothing。

我错过了什么?

注意:您可能已经注意到,生产代码是在VB.NET中,我的测试是在C#中。

1 个答案:

答案 0 :(得分:5)

是因为你的groupDetails不匹配吗?

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