对于我们的验收测试,我们已经为第三方服务创建了模拟实现,它的工作方式是我们在每次测试运行之前用这些服务替换端点地址:
var webConfigPath = @"..\..\..\..\Hosts\Host\web.config";
var mockSvcUri = "http://localhost:8000/AcceptanceTest/VehicleService";
protected override void before_all()
{
var mockVehicleService = Mock.Of<IVehicleService>();
Mock.Get(mockVehicleService).Setup(c => {...} ));
var serviceHost = mockVehicleService.GenerateMockServiceHost(new Uri(mockSvcUri));
var previousEndPoint = serviceHost.UpdateClientEndpoint(webConfigPath);
serviceHost.Open();
}
...并将其更改回after_all()
中的原始地址。这并不理想,因为如果测试结束,after_all()
可能无法执行,我们最终会得到错误的配置文件。
我想知道是否可以创建用于读取配置的接口和类,并使WCF服务通过此接口读取端点地址,而不是直接读取web.config
文件。这样就可以很容易地模拟测试的端点地址。或许还有另一种解决方案?