2

我有一个单元测试

  1. 创建一个模拟
  2. 调用我的方法进行测试(也注入我的模拟)
  3. 断言方法结果
  4. 验证模拟呼叫

当模拟调用未按预期验证时,我得到一个异常,因此测试失败。
我应该如何正确调用此验证?我应该打电话吗

// 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()));

当验证失败时,无论如何我都会遇到异常。
模拟验证的正确方法是什么?

4

2 回答 2

2

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

于 2009-07-10T14:36:44.847 回答
1

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

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

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

于 2009-07-10T14:44:48.717 回答