模拟还是不模拟测试函数的参数?

时间:2018-11-17 07:39:50

标签: unit-testing testing mocking

假设我要测试功能calculateHealth(person)。假设该函数采用person模型参数,并根据person的运行状况返回0%到100%之间的数字。可以说person模型的创建成本很高,因为它具有许多属性,并且子模型也具有许多属性。我觉得我应该嘲笑这个人,并用一个行为足够简单来测试我的calculateHealth()函数的人来代替它。但是根据专家的观点(Justin Searls –请不要嘲笑我-https://www.youtube.com/watch?v=Af4M8GMoxi4,在28:14),如果我们嘲笑模型值出来(对他来说,只能模拟依赖项,而不能模拟模型值)

如果我有更多类似的测试,如果我的person模型发生更改,则维护它们的成本很高。您对此有何看法?

1 个答案:

答案 0 :(得分:0)

由于person的模拟很复杂,因此对calculateHealth()的测试非常困难。这是设计气味,而不是测试问题。与其传递黑匣子person,不如我应该更清楚地定义接口,并且最好是易于使用和模拟/测试。