代码之家  ›  专栏  ›  技术社区  ›  Beatles1692

如何使用nunit模拟通用存储库。模拟?

  •  0
  • Beatles1692  · 技术社区  · 17 年前

    我正在研究 generic repository 我想用一个修女来测试它。嘲笑。根据麦克·哈德罗在他的文章中所说,你可以用犀牛模型来做到这一点:

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

    所以我想也许我也可以用努尼特语写同样的东西。

    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来模仿iqueryable呢?mock s?

    1 回复  |  直到 16 年前
        1
  •  0
  •   Beatles1692    17 年前

    这比我想象的要容易:) 这里有一个asqueryable()扩展方法,它允许将数组转换为iqueryable。 所以不管你是用犀牛模型还是努尼特模型。 我是这样做的:

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