2009-04-21 12 views
9

Nie mogę do końca życia znaleźć odpowiednią składnię przy użyciu składni Fluent/AAA w Rhino do sprawdzania porządku operacji.Co to jest składnia AAA równoważna użyciu Uporządkowane() w Rhino Mocks

wiem, jak to zrobić z składnia rekordu old school/odtwarzania:

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

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

Czy ktoś może mi powiedzieć, co odpowiednik tego w składni AAA dla Rhino Mocks będzie. Nawet lepiej, jeśli możesz wskazać mi jakąś dokumentację.

Odpowiedz

6

Spróbuj tego:

// 
    // 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(); 
+0

Dzięki, to wydaje się być tym, czego potrzebowałem. – mockobject

+0

To nie działa dla mnie. Czy czegoś brakuje? Napisałem, co zadziałało dla mnie jako odpowiedź w tym wątku. – Gishu

+0

Którą wersję Rhino Mocks używasz? – tvanfosson

4

Oto przykład z badania interakcji, która jest co zwykle chcą używać zamówione oczekiwania dla:

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

Ta składnia jest bardzo Expect/Sprawdź, ale jak daleko Wiem, że to jedyny sposób, aby to zrobić już teraz i wykorzystuje niektóre fajne funkcje wprowadzone w wersji 3.5.

2

Statyczny pomocnik GenerateMock wraz z zamówieniem() nie działał zgodnie z oczekiwaniami. To, co załatwiło sprawę dla mnie (klucz wydaje się być jawnie tworzyć własne MockRepository instancji):

[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

tvanfosson rozwiązanie „s nie działa na mnie też. Musiałem zweryfikować, że połączenia są wykonywane w określonej kolejności dla 2 prób.

Zgodnie z odpowiedzią Ayende w Google GroupsOrdered() nie działa w składni AAA.

Powiązane problemy