我正在尝试重构我的代码,以便我可以使用 fakexrmeasy 进行单元测试。
作为此处提到的建议重构的一部分,我尝试将 IOrganizationService 传递到我的所有类和方法中。但是,我的一些类使用了 IOrganizationService 没有的变量和方法,例如 Timeout。我正在尝试找到一种方法来重构使用 IOrganizationService 而不会丢失功能。
这就是它在重构之前的存在方式。
class testClass () {
public void testMethod(OrganizationServiceProxy service) {
service.Timeout = new TimeSpan(0, 15, 0);
}
}
这是重构之后。我尝试将 IOrganizationService 强制转换为 OrganizationServiceProxy,但伪造的服务上下文无法处理此强制转换。抛出异常。
class testClass () {
public void testMethod(IOrganizationService service) {
var serviceProxy = (OrganizationServiceProxy) service; //This breaks when given a fake context
service.Timeout = new TimeSpan(0, 15, 0);
}
}
我试过使用 IOrganizationServiceFactory,正如这篇文章中所建议的那样。问题是,factory.CreateOrganizationService() 生成的是 IOrganizationService,而不是 OrganizationServiceProxy。
如何在不丢失功能的情况下重构以使用 IOrganizationService 而不是 OrganizationServiceProxy?我猜我可能不得不以某种方式将 IOrganizationService 实现为 OrganizationServiceProxy。