【发布时间】:2018-01-03 07:14:08
【问题描述】:
如何测试以下代码?
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
【问题讨论】:
-
通常,您会通过检查
CreateRental是否做了它应该做的事情来测试该方法是否被调用,例如,向您的数据库或模拟数据库添加一个新的租用。 -
单元测试很难。我会说你引用的文章是正确的。单独使用 nUnit 没有内置机制来执行此操作。您需要结合使用某种模拟框架来编写代码并考虑测试,即遵循 SOLID 原则。
-
我想到了几个想法。如果 CreateRental 引用了通过依赖注入插入的某个对象,您可以使用 Moq 实例化该对象并使用 Moq 的验证方法来验证该方法是否被调用。或者使用 Unity Interception 来实现方法进入/退出跟踪并以这种方式断言它。或者通过读取日志文件实现方法进入/退出记录和验证。希望这会有所帮助。
-
@MitchStewart 创建租用与被测方法在同一服务类中。我们正在使用起订量,所以我可以使用。
-
如果您希望我们能够为您提供帮助,您需要出示
CreateRental()的代码。