用于创建Mock对象的文档

时间:2012-03-27 07:34:12

标签: wcf unit-testing mocking

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

    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部分的依赖注入演示,试图保持示例简单。

    希望这有帮助。