如何使用NUnit.Mocks模拟通用存储库?

时间:2009-09-04 15:20:56

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

我正在研究generic repository,我想使用NUnit.Mocks进行测试。根据迈克哈德洛在他的文章中你可以使用这样的犀牛嘲笑:

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的问题?

1 个答案:

答案 0 :(得分:0)

比我想象的要容易:) 有一个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());