【问题标题】:Inter-service Communication Architecture Using WCF, Dependency Injection, and Unit Testing使用 WCF、依赖注入和单元测试的服务间通信架构
【发布时间】:2009-04-24 14:51:13
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: wcf unit-testing architecture soa


    【解决方案1】:

    考虑使用

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-19
      • 2012-12-23
      • 2011-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      相关资源
      最近更新 更多