Rhino Mocks Справка по синтаксису LastCall, .NET - PullRequest
0 голосов
/ 23 июня 2011

У меня проблема с пониманием 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();
}

Прав ли я, говоря:

LastCall.On(demo).Repeat.Twice(); указывает, что demo.VoidNoArgs(); вызывается дважды и последний звонок.

Однако между demo.VoidNoArgs() есть кодовый блок. Означает ли это, что при использовании метода LastCall свойство не учитывается?

1 Ответ

0 голосов
/ 25 июня 2011

Отказ от ответственности: Нерегулярный пользователь Rhino-mocks.

В этом случае SetupResult не устанавливает ожидание.Поскольку вы используете StrictMock, вам нужно быть явным в определении ожиданий при каждом вызове, сделанном на макете.

Если вы хотите, чтобы тест был

  • только проверка two calls on VoidNoArgs and not anything else: прокомментируйте строку SetupResult.
  • проверьте последовательность - VoidNoArgs > Prop.get > VoidNoArgs

.

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...