NUnit - 测试方法被调用

时间:2018-01-02 21:32:50

标签: c# nunit

如何测试以下代码?

public void CreateRentalIfNecessary(int? rentalId)
{
  if (rentalId.HasValue) { CreateRental(rentalId.Value); }
}

我需要编写一个简单的单元测试来验证CreateRental不是rentalId时是否调用了null。我该如何测试?

然后在这里回答似乎太复杂了:how to assert if a method has been called using nunit

1 个答案:

答案 0 :(得分:3)

以面值为例,您尝试同时测试同一对象的两个方法CreateRentalIfNecessaryCreateRental。由于它们都在同一个对象中,因此您无法使用模拟。这让我得出了几个不同的结论......

  1. 可能不需要其中一种方法。当你需要时,你真的想要创建一个方法吗?也许您可以删除... IfNecessary变体并始终在CreateRental中检查是否有必要。当然,这是否可行取决于方法的调用方式。

  2. 作为一种变体,只需让客户进行测试即可查看是否需要通话。

  3. 如果两者都非常,我认为您正在测试CreateRental。在这种情况下,您应该能够为CreateRentalIfNeeded重用相同的测试用例。

  4. 我倾向于选择像(1)这样的东西。您的测试可能会告诉您重构SUT。