NUnit - 测试方法被调用

问题描述 投票:2回答:1

如何测试以下代码?

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

c# nunit
1个回答
3
投票

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

  1. 其中一种方法可能是不需要的。你真的想在没必要时创建一个方法吗?也许你可以删除... IfNecessary变种,并始终检查CreateRental的必要性。当然,这是否可行取决于方法的调用方式。
  2. 作为变体,只需让客户端进行测试以查看是否需要调用。
  3. 如果两者都是真的需要,我猜你正在测试CreateRental。在这种情况下,您应该能够为CreateRentalIfNeeded重用相同的测试用例。

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

© www.soinside.com 2019 - 2024. All rights reserved.