0

我是 WCF 的新手,在很大程度上,我也是分布式编程。我正在做一个需要 4 个离散服务的项目。

我正在尝试正确定义每个服务的每个组件的职责。假设我有需要与服务 A 通信的服务 B。对于每个服务,我定义了服务实现类、服务主机和代理类。

为了进行单元测试,我使用依赖注入 - 因为服务 B 需要与服务 A 通信,所以我已将 A 的代理类的实例作为构造函数参数传递给服务 B。

当我对服务 B 进行单元测试时,我必须让 A 的服务主机启动并运行。

  1. 这是进行依赖注入的错误方式吗?如果是这样,为什么,你建议我怎么做?
  2. 有没有更好的方法来进行依赖注入?
  3. 我是否必须运行服务主机才能在单元测试中获得正确的结果?
4

1 回答 1

1

考虑使用

  • ChannelFactory而不是生成的客户端。

    ChannelFactory<IHello> clientFactory = new ChannelFactory<IHello>("targetConfiguration");
    IHello client = clientFactory.CreateChannel();
    string result = client.SayHello();
    
  • 尽可能使用接口类型

  • 在编写测试时注入接口实现的模拟对象框架(示例)之一。

关于您的第三个问题,如果您的目标是测试特定的小单元(单元测试的重点:),答案是“否”。但是编写一些集成测试以确保您没有任何序列化/托管问题总是更好。

于 2009-04-24T15:15:50.190 回答