使用代码体中声明的具体类的单元测试类

Aar*_*nHS 1 .net c# unit-testing dependency-injection

很简单,我想找出的是,是否有任何方法可以干净地对这段代码进行单元测试?我可以实例化它并运行一些断言,但我的意思是实际的单元测试,我将模拟服务对象以删除被测类的任何依赖性,并且实际上让它仅测试此类而不测试其依赖的服务(在本例中为 ConcreteService)。

public class Foo{

    public SomeResult DoSomething(){
        var service = new ConcreteService();
        var foo = service.Execute();
        return foo;
    }

}
Run Code Online (Sandbox Code Playgroud)

我的正常方法是不在我的代码主体中创建这种类型的对象,但是考虑到无法更改此对象的情况,我对它进行单元测试的选项是什么?

Gis*_*shu 5

考虑到约束(你不能修改/重新编译该代码),恐怕除了“集成测试”之外你无能为力——真正的依赖关系,缓慢的测试。

在方法中实例化依赖项,而不是接受它作为构造函数或方法参数,会使事情变得困难。

正如伊森所说,有鼹鼠(但对我个人来说,这似乎不太正确)。我更喜欢设计更改,而不是帮助我掩盖设计问题的框架。