【问题标题】:How to mock a generic repository using NUnit.Mocks?如何使用 NUnit.Mocks 模拟通用存储库?
【发布时间】:2009-09-04 15:20:55
【问题描述】:

我正在开发 generic repository,我想使用 NUnit.Mocks 对其进行测试。根据 Mike Hadlow 在他的文章中的说法,您可以像这样使用 Rhino 模拟来做到这一点:

User[] users = new User[] { };
...
Expect.Call(userRepository.GetAll()).Return(users);

所以我想也许我可以像这样在 NUnit.Mocks 中写同样的东西:

dataProviderMock = new DynamicMock(typeof(IDataProvider<User>));
var user = new User {Username = "username", Password = "password"};
var users =new[]{ user };
dataProviderMock.ExpectAndReturn("GetAll",users);

但正如我所料,我收到了 InvalidCastException,因为无法将用户数组转换为 IQueryable。 那么问题来了,如何使用 NUnit.Mocks 模拟 IQueryable?

【问题讨论】:

    标签: unit-testing nunit rhino-mocks repository-pattern generics


    【解决方案1】:

    这比我想象的要容易:) 有这个 AsQueryable() 扩展方法可以将数组转换为 IQueryable。 因此,无论您使用的是 Rhino Mocks 还是 NUnit.Mocks,都没有关系。 这是我所做的:

    dataProviderMock = new DynamicMock(typeof(IDataProvider<User>));
    var user = new User {Username = "username", Password = "password"};
    var users =new[]{ user };
    dataProviderMock.ExpectAndReturn("GetAll",users.AsQueryable());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多