如何测试以下代码?
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
答案 0 :(得分:3)
以面值为例,您尝试同时测试同一对象的两个方法CreateRentalIfNecessary
和CreateRental
。由于它们都在同一个对象中,因此您无法使用模拟。这让我得出了几个不同的结论......
可能不需要其中一种方法。当你需要不时,你真的想要创建一个方法吗?也许您可以删除... IfNecessary变体并始终在CreateRental
中检查是否有必要。当然,这是否可行取决于方法的调用方式。
作为一种变体,只需让客户进行测试即可查看是否需要通话。
如果两者都非常,我认为您正在测试CreateRental
。在这种情况下,您应该能够为CreateRentalIfNeeded
重用相同的测试用例。
我倾向于选择像(1)这样的东西。您的测试可能会告诉您重构SUT。