我正在使用 nunit、moq 并尝试做 TDD。
我有返回一些用户帐户的查询。我有另一个查询可以返回一组条件。
我将浏览每个帐户并根据集合检查每个帐户,并查看用户帐户属于什么条件(如果有)。
public void Test()
{
var accounts = GetAccounts();
var conditions = GetConditions();
foreach(var a in accounts)
{
var found = conditions.Where(x => x.condition1 >= a.condition1 && x.condition2 <= a.condition2).FirstOrDefault();
if(found)
{
// move on to next condition in flow chart
}
else
{
continue;
}
}
}
我如何在 TDD 中进行测试。我想验证是否找到了正确的条件?我不认为将其作为公共方法是明智的,而且我认为在我申请某人检查条件时没有任何意义。
所以我不确定实际测试什么,因为这个条件稍后会用于计算一个数字,我可以用它来验证是否调用了正确的条件。问题是,这基本上意味着方法的结束,并且数字可能会受到任何其他东西的影响,并且会破坏我对 TDD 的理解(你一次写一个方法,但首先要进行单元测试测试一下)
编辑
是的,这就是我开始做的。我做了我的模拟和假物体。并完成了所有设置,但后来我被困在我将用来验证结果的到底是什么上。我正在制作的方法很可能会保持无效(它会记录错误或在某些时候更新客户帐户)。它确实是应用程序中唯一的公共方法,因为应用程序将作为计划任务运行(它是一个控制台应用程序),因此它基本上是“运行”方法。它将在所有业务案例的业务层中有许多私有方法。最后,用户要么被跳过,要么如果他们满足条件,他们就会受到惩罚。罚款将更新到他们的帐户。
是的,我可以将条件方法设为公开或内部,但我认为业务层之外的任何方法都不应该知道它们。它仅与该业务层相关,然后仅在运行该“运行”方法时才在其之上。
这就是让 TDD 对我来说如此困难的原因。他们说只测试公共方法,如果我说的是一个与用户交互的网站,并且很可能会向用户发送某种反馈(即成功消息/结果)。但是当你有一个应用程序应该作为计划任务运行时,它只通过一个公共方法运行,其余的只是业务规则,我很难弄清楚如何测试它。
什么是 SUT 内部?