我正在研究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的问题?
答案 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());