模拟功能不返回预期值

koo*_*hka 2 c# vb.net unit-testing moq

我有一个静态方法

Public Shared Function UpdateGroup(ByVal details As GroupDetails)
    As ControllerResult
    Return _methodObject.UpdateGroup(details)
End Function
Run Code Online (Sandbox Code Playgroud)

被重构为能够在帮助下进行模拟

Private Shared _methodObject As ISecurityController = 
     New SecurityControllerMethodObject()

Public Shared Sub OverrideInstance(ByVal controller As ISecurityController)
    _methodObject = controller
End Sub
Run Code Online (Sandbox Code Playgroud)

然后在我的测试中我有

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

SecurityController.OverrideInstance(moqSecurityController.Object);
Run Code Online (Sandbox Code Playgroud)

如果我在最后一行放置一个断点,我可以看到groupDetails有它应该具有的内容以及controllerResult,所以我希望在调用Function UpdateGroup时,将返回controllerResult,这只是一个带有Message&的简单类成功属性.

但是,我得到的是Null/Nothing.

我错过了什么?

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

Rus*_*est 5

是因为你的groupDetails不匹配?

尝试

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