2012-03-22 2 views
2

제목에서 알 수 있듯이. WriteData는 DataIn의 각 분할 CSV 항목에 대해 호출됩니다. WriteData가 성공적으로 호출되었음을 확인하고 싶습니다. 콜백을 추가하고 목록에 대해 어설 션을 수행하면 여전히 모의 검증이됩니다.Mock에 대한 검증 테스트입니까?

[Test] 
    public void DataIn_GoodRead_LoggedToFile() 
    { 
     Moq.Mock<IFileLogger> mock; 
     MyLogic logic = SetupLogic(out mock); 

     List<string> dataLogged = new List<string>(); 

     mock.Setup(x => x.WriteData(It.IsAny<string>())) 
      .Callback(delegate(string s) { dataLogged.Add(s); }); 

     logic.DataIn(1, "1,2,3"); 

     Assert.AreEqual(3, dataLogged.Count); 
    } 

답변

5

콜백을 사용하는 이유를 잘 모릅니다. 그 것처럼 보입니다

mock.Setup(x => x.WriteData(It.IsAny<string>())).Verifiable() 

... 

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3)) 

도 마찬가지입니다.

그리고 당신은 또한 설정을 피할 수 있다고 생각하고 만

mock.Verify(x => x.WriteData(It.IsAny<string>()), Times.Exactly(3)) 
있을 것입니다, 그래서 그냥 확인 줄을 사용