Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Rhino Mocks LastCall语法帮助.NET_C#_.net_Tdd_Rhino Mocks - Fatal编程技术网

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();