请查看以下代码
int sum(int a, int b)
{
int x = memberInstance.xyz(a); // memberInstance is an object of another class
.....
.....
}
比如说,也知道xyz方法返回1-10之间的数字。 现在,我想开发sum方法的单元测试方法,我想用任意返回值[1-10之间的任何值]替换方法调用 memberInstance.xyz(a )。请让我知道如何实现这一目标?如果可能,请提供示例代码。
答案 0 :(得分:5)
你应该使用它的接口。
public interface IMemberInstance
{
int xyz {get;}
}
public class MemberInstance : IMemberInstance
{
... // the real class's implementation + code here
}
public class MockMemberInstance : IMemberInstance
{
// the test class can return a test value
int xyz(int a) { return 10; }
}
然后在你的课堂上进行测试(例如MyClass)
private IMemberInstance memberInstance;
public MyClass(IMemberInstance memberInstance)
{
this.memberInstance = memberInstance;
}
int sum(int a, int b)
{
int x = memberInstance.xyz(a); // memberInstance is an object of another class
.....
.....
}
使它可以将IMemberInstance传递给要测试的类。这样你可以用测试类伪造它(模拟实现)
答案 1 :(得分:0)
您正在寻找Mocking,一个适合您的框架是"Mock You"