2009-04-21 9 views
9

Je ne peux pas trouver la syntaxe correcte en utilisant la syntaxe Fluent/AAA dans Rhino pour valider l'ordre des opérations.Quelle est la syntaxe AAA équivalente à l'utilisation de Ordered() dans Rhino Mocks

Je sais comment faire avec l'ancien dossier scolaire/syntaxe de lecture:

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

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

Quelqu'un peut-il me dire ce que l'équivalent dans la syntaxe AAA pour Rhino Mocks serait. Encore mieux si vous pouvez me diriger vers une documentation pour cela.

Répondre

6

Essayez ceci:

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

Merci, cela semble être ce dont j'avais besoin. – mockobject

+0

Cela n'a pas fonctionné pour moi. Est-ce que je manque quelque chose? Posté ce qui a fonctionné pour moi comme une réponse dans ce fil. – Gishu

+0

Quelle version de Rhino Mocks utilisez-vous? – tvanfosson

4

Voici un exemple avec des tests d'interaction qui est ce que vous voulez généralement utiliser les attentes commandées pour:

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

Cette syntaxe est très Expect/Vérifiez mais aussi loin comme je sais, c'est la seule façon de le faire maintenant, et il profite de certaines des fonctionnalités intéressantes introduites avec 3.5.

2

L'aide statique GenerateMock avec Ordered() n'a pas fonctionné comme prévu pour moi. C'est ce qui a fait l'affaire pour moi (la clé semble être de créer explicitement votre propre instance 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 solution de ne fonctionne pas pour moi non plus. J'avais besoin de vérifier que les appels sont faits dans un ordre particulier pour 2 mocks.

Selon la réponse d'Ayende dans Google GroupsOrdered() ne fonctionne pas dans la syntaxe AAA.

Questions connexes