我想要对我的习惯进行单元测试ServiceHostFactory.不幸的是,我InvalidOperationException在打电话时得到这个CreateServiceHost:
无法在当前托管环境中调用"ServiceHostFactory.CreateServiceHost".此API要求将调用应用程序托管在IIS或WAS中.
我可以通过重构我的类来解决这个问题,它暴露了一个公共方法,它可以由单元测试直接调用,而不是使用它继承的公共接口; 我不想仅仅为了单元测试而改变我的界面.我还看到另一个建议产生Cassini主机的SO答案,但我不想以这种方式使我的单元测试复杂化.
有没有办法解决这个ServiceHostFactory限制而不诉诸这些措施?
我想出了这个问题.在我的自定义中ServiceHostFactory,我只重写了受保护的方法CreateServiceHost(Type serviceType, Uri[] baseAddresses).通过重写公共CreateServiceHost(string constructorString, Uri[] baseAddresses)方法,我能够构建服务主机工厂而没有任何问题.
之前:
public class MyServiceHostFactory : ServiceHostFactory
{
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
后:
public class MyServiceHostFactory : ServiceHostFactory
{
public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses)
{
return this.CreateServiceHost(typeof(MyService), baseAddresses);
}
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1448 次 |
| 最近记录: |