C# Rhino Mocks LastCall语法帮助.NET
我在理解C# Rhino Mocks LastCall语法帮助.NET,c#,.net,tdd,rhino-mocks,C#,.net,Tdd,Rhino Mocks,我在理解LastCall()方法时遇到问题 以下是一个例子: public interface IDemo { string Prop { get; set; } void VoidNoArgs(); } [TestMethod] public void SetupResultUsingOrdered() { MockRepository mocks = new MockRepository(); IDemo demo = mocks.StrictMo
LastCall()
方法时遇到问题
以下是一个例子:
public interface IDemo
{
string Prop { get; set; }
void VoidNoArgs();
}
[TestMethod]
public void SetupResultUsingOrdered()
{
MockRepository mocks = new MockRepository();
IDemo demo = mocks.StrictMock<IDemo>();
SetupResult.For(demo.Prop).Return("Ayende");
using(mocks.Ordered())
{
demo.VoidNoArgs();
LastCall.On(demo).Repeat.Twice();
}
mocks.ReplayAll();
demo.VoidNoArgs();
for (int i = 0; i < 30; i++)
{
Assert.AreEqual("Ayende",demo.Prop);
}
demo.VoidNoArgs();
mocks.VerifyAll();
}
公共接口IDemo
{
字符串属性{get;set;}
void void noargs();
}
[测试方法]
public void setupresultsingordered()
{
MockRepository mocks=新建MockRepository();
IDemo demo=mocks.StrictMock();
SetupResult.For(demo.Prop).Return(“Ayende”);
使用(mocks.Ordered())
{
demo.VoidNoArgs();
LastCall.On(demo.Repeat.tweep();
}
mocks.ReplayAll();
demo.VoidNoArgs();
对于(int i=0;i<30;i++)
{
arenequal(“Ayende”,demo.Prop);
}
demo.VoidNoArgs();
mocks.VerifyAll();
}
我说得对吗
LastCall.On(演示)。重复.tweep()
指定demo.VoidNoArgs()
;被呼叫两次,最后一次呼叫
但是,
demo.VoidNoArgs()
之间有一个代码块。这是否意味着在使用LastCall
方法时不计算属性?免责声明:非常规Rhino mocks用户
在这种情况下,SetupResult似乎没有设置期望值。因为您使用的是StrictMock,所以您需要明确地为在mock上进行的每个调用设置期望值
如果你想让测试成功
- 仅检查VoidNoArgs上的两个调用,而不检查其他任何内容:注释SetupResult行
- 检查序列-
VoidNoArgs>Prop.get>VoidNoArgs
你到底想要实现什么?您不应该使用RhinoMock的录制/重播语法,因为它现在已经死了。尝试与AAA(Arrange Act Assert)suntax一起学习instead@Thoms,我不同意你的看法。它们共存。我想我不明白这个问题。上述测试在我的机器上通过。你想让它失败吗?如中所示,如果多次调用属性,则测试将失败。
using (mocks.Ordered())
{
demo.VoidNoArgs();
Expect.On(demo).Call(demo.Prop).Return("Ayende"); // fails unless you use .Repeat.Times(30) or make just one call.
demo.VoidNoArgs();