Nunit 使用模拟验证的单元测试

Nunit 使用模拟验证的单元测试,nunit,moq,verification,Nunit,Moq,Verification,我有一个单元测试 创建一个模拟 调用我要测试的方法(也注入我的mock) 断言方法结果 验证模拟调用 当模拟调用未按预期进行验证时,我会得到一个异常,从而导致测试失败。 我应该如何正确地称之为验证?我应该打电话吗 // verify property get accessor call m.VerifyGet<bool>(p => p.IsRead, Times.AtLeastOnce()); //验证属性get访问器调用 m、 VerifyGet(p=>p.IsRead,T

我有一个单元测试

  • 创建一个模拟
  • 调用我要测试的方法(也注入我的mock)
  • 断言方法结果
  • 验证模拟调用
  • 当模拟调用未按预期进行验证时,我会得到一个异常,从而导致测试失败。
    我应该如何正确地称之为验证?我应该打电话吗

    // verify property get accessor call
    m.VerifyGet<bool>(p => p.IsRead, Times.AtLeastOnce());
    
    //验证属性get访问器调用
    m、 VerifyGet(p=>p.IsRead,Times.AtLeastOnce());
    
    或者我应该用断言来称呼它

    // verify property get accessor call
    Assert.DoesNotThrow(() => m.VerifyGet<bool>(p => p.IsRead, Times.AtLeastOnce()));
    
    //验证属性get访问器调用
    Assert.DoesNotThrow(()=>m.VerifyGet(p=>p.IsRead,Times.atlestOnce());
    
    当验证失败时,我仍然会得到一个异常。

    模拟验证的正确方法是什么?

    验证Get就足够了,assert似乎没有增加任何价值,那么为什么要添加更多的措辞呢?

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

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

    当然,您可以将其包装在VerifyGet中,但我认为这只会让事情变得混乱,因为VerifyGet无论如何都会通过测试