我有一个IEmployee接口,尚无实现。当多个开发人员在同一个模块上工作时,会发生这种情况。现在,我正在编写一个集成测试来测试我的更改,并且需要为IEmployee接口模拟,但是当该方法在程序集dll中可用时,我的测试应调用原始实现。我可以创建该类的实例
接口:
id Type1 Type2 Type3 cluster distanct_to_cluster_0
0 10000 0.0 0.00 0.00 1 2.3
1 10001 0.0 63.72 0.00 2 3.6
2 10002 473.6 174.00 31.60 0 0.5
3 10003 0.0 996.00 160.92 3 3.7
4 10004 0.0 524.91 0.00 4 1.8
实例:
public interface IEmployee
{
bool IsWorkingOnDate();
SendNotificationPreference();
}
模拟:
Type ob = Assembly.Load("MockUtility").GetType(string.Format("MockUtility.Employee");
var Emp = (IEmployee)Activator.CreateInstance(ob);
当原始实现尚不可用时,如何使用上述模拟在原始实现中调用方法。 SenNotificationPreference方法返回null。
注意:我将为模拟和真实实现编写测试,并且只有在可用时才调用真实实现。
答案 0 :(得分:1)
我认为您想要实现的是在调用模拟程序时调用适当的方法。 最简单的方法是:
bobMock.Setup(x => x.SendNotificationPreference()).Callback(() =>
{
if(isImplemented)
{
yourObject.YourMethod();
}
});