【发布时间】:2016-07-25 00:00:54
【问题描述】:
我是编码新手。
我有课,A:
public class A
{
public InterfaceB _b;
public A()
{
_b = new B();
}
public string functionA()
{
if(String.IsNullOrEmpty(_b.GetId()))
return String.Empty;
else if(String.IsNullOrEmpty(_b.GetKey()))
return String.Empty;
else
return _b.GetToken();
}
}
public interface InterfaceB
{
string GetId();
string GetKey();
string GetToken();
}
我想测试functionA,在那里我可以渗透到interfaceB的所有三个方法。在我的单元测试中,我创建了一个 A 类的实例,当我调用它时,我无法设置 B 类的行为。
它一直在访问数据库,但是我需要它用于其他测试用例。
我如何完全模拟这个以便我可以测试整个逻辑?
【问题讨论】:
-
您将需要在
A上使用InterfaceB作为参数的构造函数,然后您可以直接将模拟对象InterfaceB传递给该构造函数,或者将其设置为注入正在使用 DI,即使仅用于该测试。
标签: c# .net unit-testing xunit.net