使用模拟验证单元测试

时间:2009-07-10 14:33:43

标签: nunit moq verification

我有一个单元测试

  1. 创建一个模拟
  2. 调用我的方法进行测试(也注入我的模拟)
  3. 断言方法结果
  4. 验证模拟通话
  5. 当模拟调用未按预期验证时,我会收到异常,从而导致测试失败 我应该如何正确地调用此验证?我应该打电话吗

    // verify property get accessor call
    m.VerifyGet<bool>(p => p.IsRead, Times.AtLeastOnce());
    

    或者我应该用Assert

    来调用它
    // verify property get accessor call
    Assert.DoesNotThrow(() => m.VerifyGet<bool>(p => p.IsRead, Times.AtLeastOnce()));
    

    当验证失败时,无论如何我都会得到例外 模拟验证的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

VerifyGet就足够了,断言似乎没有增加任何价值,为什么要添加更多的措辞?

答案 1 :(得分:1)

应该使用DoesNotThrow方法来测试您自己的方法是否符合您的规范。

简而言之,添加DoesNotThrow看起来就像是在测试VerifyGet的行为而不是SUT的行为。

当然,你可以将它包装在VerifyGet中,但我认为只会让事情变得混乱,因为无论如何VerifyGet都会使测试失败。