2009-04-21 12 views
9

Non riesco a trovare la sintassi corretta utilizzando la sintassi Fluent/AAA in Rhino per convalidare l'ordine delle operazioni.Qual è la sintassi AAA equivalente all'utilizzo di Ordered() in Rhino Mocks

so come fare questo con la sintassi record di vecchia scuola/riproduzione:

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

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

qualcuno può dirmi quale sarebbe l'equivalente di questo nella sintassi AAA per Rhino Mocks. Ancora meglio se puoi indicarmi qualche documentazione per questo.

risposta

6

Prova questo:

// 
    // 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

Grazie, questo sembra essere quello di cui avevo bisogno. – mockobject

+0

Questo non ha funzionato per me. Mi sto perdendo qualcosa ? Ha pubblicato ciò che ha funzionato per me come risposta in questa discussione. – Gishu

+0

Quale versione di Rhino Mocks stai usando? – tvanfosson

4

Ecco un esempio con i test di interazione che è quello che di solito si vuole utilizzare aspettative ordinate per:

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

Questa sintassi è molto Aspettatevi/Verify ma per quanto riguarda come so che è l'unico modo per farlo in questo momento, e sfrutta alcune delle belle funzionalità introdotte con 3.5.

2

L'helper statico GenerateMock insieme a Ordered() non ha funzionato come previsto per me. Questo è ciò che ha fatto il trucco per me (la chiave sembra essere quello di creare in modo esplicito il proprio esempio 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

tvanfosson 's soluzione non funziona per me. Avevo bisogno di verificare che le chiamate siano fatte in un ordine particolare per 2 mock.

In base alla risposta di Ayende in Google GroupsOrdered() non funziona con la sintassi AAA.

Problemi correlati