Что такое синтаксис AAA, эквивалентный использованию Ordered () в Moh Rhino? - PullRequest
10 голосов
/ 21 апреля 2009

Я не могу найти правильный синтаксис, используя синтаксис Fluent / AAA в Rhino для проверки порядка операций.

Я знаю, как это сделать с синтаксисом записи / воспроизведения старой школы:

        MockRepository repository = new MockRepository();
        using (repository.Ordered())
        {
            // set some ordered expectations
        }

        using (repository.Playback())
        {
            // test
        }

Может кто-нибудь сказать мне, что будет эквивалентно этому в синтаксисе ААА для Rhino Mocks. Еще лучше, если вы можете указать мне некоторую документацию для этого.

Ответы [ 4 ]

6 голосов
/ 21 апреля 2009

Попробуйте это:

  //
  // Arrange
  //
  var mockFoo = MockRepository.GenerateMock<Foo>();
  mockFoo.GetRepository().Ordered();
  // or mockFoo.GetMockRepository().Ordered() in later versions

  var expected = ...;
  var classToTest = new ClassToTest( mockFoo );
  // 
  // Act
  //
  var actual = classToTest.BarMethod();

  //  
  // Assert
  //
  Assert.AreEqual( expected, actual );
 mockFoo.VerifyAllExpectations();
4 голосов
/ 19 августа 2009

Вот пример с тестированием взаимодействия, для которого вы обычно хотите использовать упорядоченные ожидания:

// Arrange
var mockFoo = MockRepository.GenerateMock< Foo >();

using( mockFoo.GetRepository().Ordered() )
{
   mockFoo.Expect( x => x.SomeMethod() );
   mockFoo.Expect( x => x.SomeOtherMethod() );
}
mockFoo.Replay(); //this is a necessary leftover from the old days...

// Act
classToTest.BarMethod

//Assert
mockFoo.VerifyAllExpectations();

Этот синтаксис очень похож на Expect / Verify, но, насколько я знаю, это единственный способ сделать это прямо сейчас, и он использует некоторые из приятных функций, представленных в 3.5.

2 голосов
/ 23 января 2010

Статический помощник GenerateMock вместе с Ordered () не работали, как ожидалось Вот что помогло мне (кажется, ключ к явному созданию собственного экземпляра MockRepository):

    [Test]
    public void Test_ExpectCallsInOrder()
    {
        var mockCreator = new MockRepository();
        _mockChef = mockCreator.DynamicMock<Chef>();
        _mockInventory = mockCreator.DynamicMock<Inventory>();
        mockCreator.ReplayAll();

        _bakery = new Bakery(_mockChef, _mockInventory);

        using (mockCreator.Ordered())
        {
            _mockInventory.Expect(inv => inv.IsEmpty).Return(false);
            _mockChef.Expect(chef => chef.Bake(CakeFlavors.Pineapple, false));
        }


        _bakery.PleaseDonate(OrderForOnePineappleCakeNoIcing);

        _mockChef.VerifyAllExpectations();
        _mockInventory.VerifyAllExpectations();
    }
0 голосов
/ 03 июня 2011
Решение

tvanfosson у меня тоже не работает. Мне нужно было убедиться, что звонки сделаны в определенном порядке на 2 макета.

Согласно ответу Айенде в Группы Google Ordered() не работает в синтаксисе ААА.

...