2010-11-16 40 views
0

我有一个方法,有一些数据对象传入它,做一些计算,以填充基于其他领域的对象以前的空字段,然后发回结果。这种方法并没有真正跨越集成边界 - 数据对象是具有相当复杂的其他实体依赖树的实体,但从这种方法的角度来看,它们只是具有状态的对象(谢谢ORM)。状态与行为测试的代码不跨越集成边界

在我看来,单元测试这将需要检查状态 - 设置一些数据,运行代码做计算并检查结果。这是忽视似乎是全面的建议,即测试应该检查行为而不是状态的合理案例?还是我有点误解测试驱动的文献?

回答

2

我会说你正在测试做计算的方法的行为,所以这不是问题。

有些人可能会提出,在单独的方法(作为服务)中拥有行为而不是拥有数据的类可能是代码异味,但这是一个不同的问题。

+0

谢谢,这让我想一想 – iftheshoefritz 2010-11-16 11:27:45

+0

不幸的是,我不能将方法放在单个数据对象上,因为每个实例的计算都涉及一组其他实例的值:) – iftheshoefritz 2010-11-18 08:27:32

+0

在这种情况下,您很好! – 2010-11-23 09:10:15

0

行为是给定的输入状态,你得到预期的输出状态。单元测试应该创建具有已知状态的虚拟对象(可能是模拟),运行测试中的方法,然后检查输出(在这种情况下,这是输入参数的状态)是正确的。