相关疑难解决方法(0)

验证方法被调用

使用Moq,我有一个非常奇怪的问题,如果我设置的方法是公共的,模拟上的设置似乎只能工作.我不知道这是一个Moq bug还是我错了(Moq的新手).以下是测试用例:

public class TestClass
{
    public string Say()
    {
        return Hello();
    }

    internal virtual string Hello()
    {
        return "";
    }
}

[TestMethod]
public void Say_WhenPublic_CallsHello()
{
    Mock<TestClass> mock = new Mock<TestClass>();
    mock.Setup(x => x.Hello()).Returns("Hello World");

    string result = mock.Object.Say();
    mock.Verify(x => x.Hello(), Times.Exactly(1));
    Assert.AreEqual("Hello World", result);     
}
Run Code Online (Sandbox Code Playgroud)

该消息失败了:

Say_WhenPublic_CallsHello失败:Moq.MockException:调用没有在仿1次进行的:X => x.Hello()在Moq.Mock.ThrowVerifyException(IProxyCall预期,表达表达,倍)...

如果我像这样公开Hello方法,则测试通过.这是什么问题?

public virtual string Hello()
{
    return "";
}
Run Code Online (Sandbox Code Playgroud)

提前致谢!

.net c# moq mocking verify

23
推荐指数
3
解决办法
3万
查看次数

使用Moq验证私有方法的执行

我想测试以下逻辑(这显然是我的方法的精简版):

public void myPublicMethod(params) {

    if(some_condition)
        privateMethod1();
    else
        privateMethod2();
} 
Run Code Online (Sandbox Code Playgroud)

我已经模拟了方法中的所有其他依赖项,并且我已经设置了它以便我可以保证some_condition为true.我想要做的是验证我的privateMethod1()只被调用一次,并且根本不调用privateMethod2().这可能与Moq有关吗?

以下是有关该问题的一些注意事项:

  • privateMethod1()和privateMethod2()与myPublicMethod属于同一个类,因此我无法为此类创建模拟对象.
  • privateMethod1/2的主体包含来自包含这些和myPublicMethod的类的许多依赖项,因此将privateMethod1/2分解为它们自己的帮助器类将非常耗时.

有什么想法吗?提前致谢.我愿意接受这不可能做到,但我想知道这种或那种方式.

unit-testing moq mocking private-members

5
推荐指数
2
解决办法
7989
查看次数

在单元测试中验证私有方法调用的顺序

我有以下课程:

class MyClass {

  public void doIt() {
     methodOne();
     methodTwo();
     methodThree();
  }

  private void methodOne() {
     // ...
  }

  // rest of methods similar...

}
Run Code Online (Sandbox Code Playgroud)

我的目的是验证当我调用doIt()时,将按顺序调用方法metodOne(),methodTwo()和methodThree().

我正在使用mockito进行嘲弄.有谁知道我如何测试这种情况?

java junit mocking mockito

1
推荐指数
1
解决办法
1655
查看次数

标签 统计

mocking ×3

moq ×2

.net ×1

c# ×1

java ×1

junit ×1

mockito ×1

private-members ×1

unit-testing ×1

verify ×1