对Rhino模拟方法的多次调用会返回不同的结果

时间:2009-09-23 19:57:47

标签: rhino-mocks

如果我想模拟一个返回一个字符串的类,该字符串用于确定while循环是否应该继续(想象读取字符串!= null),我该如何设置期望值。我尝试过以下方法:

    provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20");
    provider.Reader.Expect(r => r.ReadLine()).Return(null);

但是当它在同一个方法中被调用两次时,它会在两种情况下返回第一个字符串,而我希望它在第二次调用时返回第二个值(null)。

2 个答案:

答案 0 :(得分:31)

我认为你可以在你目前正在使用的语法结束时坚持重复。

provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20").Repeat.Once();
provider.Reader.Expect(r => r.ReadLine()).Return(null).Repeat.Once();

 provider.Reader.Expect(r => r.ReadLine()).Return("1,10,20").Repeat.Once();
    provider.Reader.Expect(r => r.ReadLine()).Return(null);

如果你有超过第二次电话的任何电话,你想要使用第二次期望。

答案 1 :(得分:0)

我不熟悉您正在使用的语法。我会把它写成:

r.ReadLine();
LastCall.Return("1,10,20").Repeat.Once();
r.ReadLine();
LastCall.Return(null).Repeat.Once();

确保您指定重复内容的次数。 (不要使用Visual Studio,语法可能不准确。)