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

RhinoMock方法中的参数约束

  •  1
  • Khash  · 技术社区  · 15 年前

    我正在模拟一个存储库,该存储库中应该有一个用于测试场景的实体。存储库必须基于已知的ID返回此实体,并且在传入其他ID时不返回任何内容。

    我试过这样做:

    _myRepository.Expect(item => item.Find(knownId)).Return(knownEntity);
    _myRepository.Expect(item => item.Find(Arg<Guid>.Is.Anything)).Return(null);
    

    不过,第二行似乎覆盖了第一行,存储库总是返回空值。当测试场景只涉及到一个ID的值时,我不想模拟所有不同的可能被请求的ID(它们可以达到数百个)。

    我知道我可以把第二行改为第一行的负数。但是,如果存储库必须为一个测试场景返回多个实体,那么这将变得越来越困难(也越来越难看)。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Grzenio    15 年前

    这对我来说确实有效。我猜你不止一次在寻找你的身份证。尝试将引用的行更改为:

    _myRepository.Stub(item => item.Find(knownId)).Return(knownEntity);
    _myRepository.Stub(item => item.Find(Arg<Guid>.Is.Anything)).Return(null);
    

    让我知道它是否解决了这个问题。