【问题标题】:Documentation for creating Mock object创建 Mock 对象的文档
【发布时间】:2012-03-27 07:34:11
【问题描述】:

我想对 wcf 应用程序进行单元测试。但是我没有获得足够的依赖注入和创建模拟对象的信息。有人可以给我一些建议吗?

【问题讨论】:

    标签: wcf unit-testing mocking


    【解决方案1】:

    我建议看看nSubstitute。这是一个模拟框架,在我看来,它比其他一些框架更容易理解。 here 是关于依赖注入的一些细节。 希望这可以帮助您入门。

    【讨论】:

      【解决方案2】:

      基本的依赖注入并不是一个很难掌握的概念。您需要执行以下步骤:

      1. 创建一个抽象类,或者最好是一个接口。
      2. 创建一个实现该接口的类。
      3. 在依赖于它的构造函数类上注入接口。

      例如:

      public interface IMyRepository
      {
         void SaveData();
      }
      
      public class MyRepository : IMyRepository
      {
         public void SaveData()
         {
            //...Do Something
         }
      }
      
      public class MyDomainService
      {
         private readonly IMyRepository _repository;
      
         public MyDomainService(IMyRepository repository)
         {
            _repository = repository;
         }
      
         public void SaveNewEntityInDatabase()
         {
            //... Do Something
      
            _repository.SaveData();
         }
      }
      

      通过这样做,您已经有效地将 IMyRepositoryDe​​pendency 注入到 MyDomainService 类中,因此现在您可以使用自己喜欢的模拟框架或编写自己的模拟框架来模拟或存根它。

      对于您关于 WCF 的问题的第一部分,我可以通过多种方式解释这个问题,因此您必须更加具体才能获得更好的帮助。

      如果您要做的是实际测试 WCF 服务,我建议您仅将它们用作应用程序的 facade,这样您就不需要实际测试服务,而是测试业务层的域对象.

      例如:

      public class MyWCFService
      {
         public void SaveNewEntityInDatabase()
         {
            var myDomainBusinessService = new MyDomainBusinessService();
            myDomainBusinessService.SaveNewEntityInDatabase();
         }
      }
      
      public class MyDomainBusinessService
      {
          public void SaveNewEntityInDatabase()
          {
              //...Do Something
          }
      }
      

      我可以为您提供更多信息,但我也不完全确定您到底需要什么。我跳过了 WCF 部分的依赖注入演示,以尽量保持示例简单。

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 2021-01-12
        • 2020-12-20
        • 2021-01-18
        相关资源
        最近更新 更多