2014-01-21 3 views
0
내 테스트에서 다음 코드 감안할 때

:있는 방법은 매개 변수를 확인하는 동안 불렀다 어설 올바른

provider.SaveItem(new SaveContract(item.Id, user, contents));provider 로컬 이름입니다 :

var mockProvider = MockRepository.GenerateMock<IItemProvider>(); 

var target = new ItemService(mockProvider); 

target.SaveItem(item); 

내부적으로 target.SaveItem이 같은 호출을 mockProvider 전달

사용 방법 :.

  1. 확인 provider.SaveItem
  2. 그들이해야로서 item.Id, usercontents의 값이라는 것을 어서 트 동안 라고합니다.

은 내가 mockProvider.AssertWasCalled을 사용할 수 있습니다하지만 SaveContract의 생성자에 전달 된 매개 변수의 조건을 설정하는 구문을 알아낼 수 있다고 생각합니다.

TIA

+1

참조 : http://stackoverflow.com/questions/6413040/rhino-mocks-how-to-assert -that-an-actions--called- – jessehouwing

+0

하지만 AssertWasCalled가 void를 반환하면 어떻게 호출을해야합니까? – MattC

+1

오 '예상'만 작동합니다. – MattC

답변

0

좋아 너무 this에 따라 내가했던 다음과 같은 :

var mockProvider = MockRepository.GenerateMock<IItemProvider>(); 
var target = new ItemService(mockProvider); 
Item testItem = null; 

mockProvider.Expect(c => c.SaveItem(Arg<Item>.Is.Anything)) 
.WhenCalled(call => 
{ 
    testItem = (Item)call.Arguments[0]; 
}); 


target.SaveItem(item);//item initialised elsewhere 


Assert.AreEqual(item.Id, testItem.Id);