【发布时间】:2014-04-01 23:12:06
【问题描述】:
我有一个 c# 方法,它依赖于它使用本地实例化的对象进行的服务调用的返回值。如何在不更改代码的情况下对其进行测试。我知道依赖注入会使其可测试,或者将依赖传递到此方法之外会使其可测试,但这里不是这种情况。
我的方法看起来像这样:
public class Animal
{
int Weight;
public int CalculateActualWeight()
{
var weightFactory = new WeightFactory();
var weight = Weight + weightFactory.GetEatenAmount();
return weight;
}
}
要测试的方法是CalculateActualWeight()。
【问题讨论】:
-
你可以完全不改变生产代码,或者只是不改变它的外部接口吗?如果你将
var weightFactory = new WeightFactory();拉到Animal上的一个函数中,你可以在你的单元测试中自我存根。不是您的最佳选择,但总比无法测试要好。
标签: c# unit-testing dependencies