2009-04-21 25 views
9

Tôi không thể tìm thấy cú pháp thích hợp bằng cách sử dụng cú pháp Fluent/AAA trong Rhino để xác nhận thứ tự các phép toán.Cú pháp AAA tương đương với việc sử dụng Ordered() trong Rhino Mocks

Tôi biết làm thế nào để làm điều này với cú pháp kỷ lục trường cũ/phát lại:

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

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

bất cứ ai có thể cho tôi biết những gì tương đương với này trong cú pháp AAA cho Rhino Mocks sẽ. Thậm chí tốt hơn nếu bạn có thể chỉ cho tôi một số tài liệu cho việc này.

Trả lời

6

Hãy thử điều này:

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

Cảm ơn, đây có vẻ là những gì tôi cần. – mockobject

+0

Điều này không hiệu quả đối với tôi. Tui bỏ lỡ điều gì vậy ? Đăng những gì đã làm việc cho tôi như là một phản ứng trong chủ đề này. – Gishu

+0

Bạn đang sử dụng phiên bản Rhino Mocks nào? – tvanfosson

4

Dưới đây là một ví dụ với thử nghiệm tương tác đó là những gì bạn thường muốn sử dụng mong đợi ra lệnh cho:

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

Cú pháp này là rất nhiều Expect/Xác nhận nhưng như xa như tôi biết đó là cách duy nhất để làm điều đó ngay bây giờ, và nó tận dụng lợi thế của một số tính năng tốt đẹp được giới thiệu với 3.5.

2

Trình trợ giúp tĩnh GenerateMock cùng với Ordered() không hoạt động như mong đợi đối với tôi. Đây là những gì đã làm các trick cho tôi (phím có vẻ là để tạo ra một cách rõ ràng dụ MockRepository của riêng bạ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 giải pháp không làm việc cho tôi cả. Tôi cần xác minh rằng các cuộc gọi được thực hiện theo thứ tự cụ thể cho 2 mocks.

Theo trả lời của Ayende trong Google GroupsOrdered() không hoạt động trong cú pháp AAA.

Các vấn đề liên quan