当前位置:  开发笔记 > 编程语言 > 正文

这是使用模拟单元测试存储库的正确方法吗?

如何解决《这是使用模拟单元测试存储库的正确方法吗?》经验,为你挑选了1个好方法。

我有这UserRepository门课.

public class UserRepo : IUserRepo 
{
    public TheUser RegisterUser(UserRegistrationDetails details)
    {
        //implementation here
    }

    public bool DeleteUser(string username)
    {
        //implementation here
    }

    public TheUser UpdateUser(TheUser user)
    {
        //implementation here
    }
 }

现在为了测试这个,我通过实现相同的接口创建了一个模拟存储库IUserRepo,我的测试类现在调用了这个Mock存储库.我觉得我在这里做错了,因为我没有测试实际的UserRepository类,而是另一个模拟的实现.我该怎么纠正这个?存储库是否经过测试?



1> NikolaiDante..:

您将使用您的模拟IUserRepo来测试使用的类IUserRepo,而不是测试实现UserRepo.

public class Consumer
{
  private IUserRepo repo;  

  public Consumer(IUserRepo repo)
  {
    this.repo = repo;
  }

  public void DoStuff()
  { 
    // Act upon repository
  }
}

您将能够Consumer使用Mocked存储库进行测试,将其与任何(例如)db调用隔离开来.

要对单元进行单元测试UserRepo,您可以传入它的依赖项

public class UserRepo : IUserRepo 
{
   private ISomeDependancy dependancy;

   public UserRepo(ISomeDependancy dependancy)
   {
      this.dependancy = dependancy;
   }

   public TheUser RegisterUser(UserRegistrationDetails details)
   {
       //implementation here, that consumes this.dependancy
   }

   ....

并应用与上述相同的理论.

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有