2010-01-26 5 views
7

다음 코드를 테스트하려고합니다.Moq를 사용하여 모의리스트를 반환하는 모의 객체

 public void CleanUp() 
    { 
     List<ITask> tasks = _cleanupTaskFactory.GetTasks(); 

     //Make sure each task has the task.Execute() method called on them 
    } 

_cleanupTaskFactory의 조롱 된 구현을 만들고 getTasks() 메서드를 스텁하여 형식을 반환합니다.

List<Mock<ITask>> 

. ..하지만 컴파일러는 반환 값으로 받아 들일 수 없습니다.

제 목표는 반환 된 각 작업에 Verify() MoQ 메서드를 사용하여 호출 된 .Execute() 메서드가 있는지 확인하는 것입니다.

각 작업이 실행되도록 어떻게 주장 할 수 있습니까?

답변

10

는 단순히 뭔가를 할 수있는 다음과 같은 : 이제

var mocks = new List<Mock<ITask>>(); 
for(var i = 0; i < 10; i++){ 
    var mock = new Mock<ITask>(); 
    mock.Setup(t => t.Execute()).Verifiable(); 
    mocks.Add(mock); 
} 

_cleanUpTaskFactoryMock.Setup(f => f.GetTasks()).Returns(mocks.Select(m => m.Object).Tolist()); 

mocks 목록에 대한 참조를 유지해야합니다, 당신이 당신의 테스트를 수행 할 때 모든 모의 객체를 반복하고 Verify()와 같이 전화하십시오 :

mocks.ForEach(m => m.Verify()); 
+1

+1 당신은 저를 때리십시오 : –

관련 문제