2012-04-19 3 views
3

테스트 할 아주 간단한 방법이 있습니다. _interactionService는 고객 삭제에 대한 확인을 사용자에게 요청하는 대화 상자를 표시합니다. 상자에서 해당 버튼을 클릭하면 제공된 작업이 호출됩니다. 액션은 컨텍스트를 조작하고 변경 사항을 저장합니다. 저장이 완료되면 다른 작업이 호출됩니다.클로저 테스트

private void Delete(object entity) 
{ 
    _interactionService.ShowConfirmationBox("Delete?", "Are you sure you want to delete this customer?",() => 
     { 
      Customer customer = entity as Customer; 
      Context.Attach(customer); 
      Context.Delete(customer); 
      Context.Save(() => DoSomethingElseWhenSaveComplete); 
     }); 
} 

이 방법을 테스트하는 방법에 관해서는 실종 상태입니다. 서비스와 컨텍스트를 조롱했지만 클로저를 테스트하는 방법은 무엇입니까? 상황이 조롱 경우

+0

답변을 모르겠다. 그것에 대해 생각하고있다. 너는 사적인 방법을 시험해서는 안된다. –

+0

왜'tdd' 태그입니까? 대신 '단위 테스트'가 있어야합니다. – GolfWolf

답변

3

, 당신은 테스트에 callback을 사용할 수 있습니다 : 당신은 서비스에서이 테스트를해야

Action saveAction = null; 
contextMock 
    .Setup(c => c.Save(It.IsAny<Action>()) 
    .Callback<Action>(a => saveAction = a); 

// Call delete... 

Assert.IsNotNull(saveAction); 

saveAction(); 

// Assert that DoSomethingElseWhenSaveCompleted was done 
0

(API) 수준이 아닌 UI 레이어를. 당신은 당신의 시험으로 무엇을 성취하려고합니까?

  1. 당신은 당신이

또는

  1. 은 그렇게 쓰기

내 가정이 2 번 것 삭제 방법을 테스트하려고 삭제 호출 할 수 있습니다 확인하려고 서비스 계층에 대한 테스트 대 UI 클래스.