问题描述
这是基本的代码结构:
public sealed class Wisher : IWisher {
private readonly int _valueA;
private readonly int _valueB;
public Wisher(int a){
_valueA = a;
}
public Wisher(int b){
_valueB = b;
}
public int myMethod(int c){
var client = SomeHTTPFactory(c); // Like to mock this client
var h;
if (_valueA != null){
h = client.runA(a); // point A
}
else if (_valueB != null){
h = client.runB(b); // point B
}
else {
h = 0;
}
return h;
}
}
在我的起订量中,我想注入自己的客户端以测试流程的逻辑。
从根本上讲,我想测试控制流,如果应该调用_valueA
是当前点A,而应该调用_valueB
是当前点B。我已经有了SomeHTTPFactory
的模拟,以确保它总是返回我期望的值。
我不确定如何在测试Wisher时注入Mock<SomeHTTPFactory>
。
感谢您提供有关此模式的任何帮助或文档。
解决方法
您将希望重构您的类以使用依赖项注入-在类的构造函数中,提供一个接口来替换“ SomeHTTPFactory”。这样,您就可以模拟该项目。