2009-04-21 20 views
9

No puedo encontrar la sintaxis correcta utilizando la sintaxis Fluent/AAA en Rhino para validar el orden de las operaciones.¿Cuál es la sintaxis AAA equivalente al uso de Ordered() en Rhino Mocks

sé cómo hacer esto con la sintaxis de registro de la vieja escuela/reproducción:

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

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

Puede alguien decirme lo que sería el equivalente a esto en la sintaxis de AAA para la burla de Rhino. Aún mejor si me puede indicar algún tipo de documentación para esto.

Respuesta

6

Prueba esto:

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

Gracias, esto parece ser lo que necesitaba. – mockobject

+0

Esto no funcionó para mí. Me estoy perdiendo de algo ? Publiqué lo que funcionó para mí como respuesta en este hilo. – Gishu

+0

¿Qué versión de Rhino Mocks estás usando? – tvanfosson

4

He aquí un ejemplo con las pruebas de la interacción que es lo que normalmente se desea utilizar expectativas ordenados por:

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

Esta sintaxis es mucho esperar/Verificar pero en lo como sé, es la única forma de hacerlo ahora, y se aprovecha de algunas de las características agradables que se presentaron con 3.5.

2

El asistente estático GenerateMock junto con Ordered() no funcionó como esperaba. Esto es lo que hizo el truco para mí (la clave parece ser la de crear explícitamente su propia instancia MockRepository): solución

[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 no funciona para mí tampoco. Necesitaba verificar que las llamadas se hicieron en orden particular durante 2 simulacros.

Según la respuesta de Ayende en Google GroupsOrdered() no funciona en sintaxis AAA.

Cuestiones relacionadas