【发布时间】:2016-12-06 01:06:06
【问题描述】:
我有两种方法,如下所示。
public bool IsSuccess()
{
// Some logi
}
public bool ShouldSendLogic()
{
var status = IsSuccess();
if(status)
{
SendInvoice();
// do some operation
}
return status;
}
现在我正在编写集成/单元测试。我可以调用 ShouldSendLogic,但我想通过将 Success 设置为 false 来确保不会调用 SendInvoice。 (仅适用于负面情况)。如何为这种情况编写测试用例,请帮我写一个代码。
【问题讨论】:
-
SendInvoice是否会引起任何可以测量的副作用? -
@SamIam:是的,根据上述逻辑,当状态为假时不应执行此逻辑
-
但它会引起任何副作用吗?它有什么作用?
-
@SamIam:没有副作用,它会发送不应该发生的发票,并且还会登录数据库。
-
发送发票对我来说听起来像是一种副作用。为什么不确保您有办法接收已发送的发票,然后检查以确保未发送发票?或者,为什么不相信方法的返回值呢?如果没有一个好的minimal reproducible example 清楚地显示正在发生的事情,就不可能提供任何类型的真实、具体的答案。事实是,当您调用一个方法时,您通常不会监控,更不用说指示该方法的作用。如果你坚持根据这种行为(或没有这种行为)进行单元测试,你将不得不在代码中构建类似的东西。
标签: c# unit-testing nunit integration-testing testcase