Moq을 사용하면 메서드가 이 아닌이 Times.Never
을 사용하는 특정 인수 (즉, 특정 조건자를 만족하는 인수)로 호출되지 않는지 확인할 수 있습니다.왜 시간이 없습니까? 항상 Moq에 있습니까?
그러나 방법을 확인하는 방법은 몇 번이나 호출되는 메서드는 무엇입니까? 항상은 특정 인수가 필요합니까?
기본값은 Times.AtLeastOnce
입니다.
Times.Always
이 없습니다. 나는 명백한 것을 놓치고 있는가? 감사!
편집 : 나는 지난 주 Moq 메일 링리스트에 제안을 올렸지 만, 아직 검토 된 것처럼 보이지 않습니다. 나는 어떤 갱신이라도 여기에서 게시 할 것이다.
편집 : 예. XML 문서를 생성하는 클래스를 테스트한다고 가정 해보십시오. 유효한 문서 만 생성되도록하고 싶습니다. 즉, 작성자 종속성이 이고 유효 시퀀스 번호가 지정된 주어진 유효한 문서 만 쓸 수 있는지 테스트하십시오.
should_only_write_valid_xml_documents
Mock.Get(this.writer).Verify(
w => w.Write(
It.Is<XDocument>(doc => XsdValidator.IsValid(doc)),
It.Is<int>(n => n < 3)),
Times.Always);
"항상"얼마나 많은 시간을 아는 것을 의미 "항상을 "라고 말하면서 왜 Times (n)을 사용하지 않는지 안다면? – mtijn
아니야, 그게 문제의 핵심이야. 크기가 동적으로 결정되는 루프에서 메서드가 호출되는 것을 상상해보십시오. –
루프 반복 내에서 메서드가 한 번, 반복해서 호출되었는지 확인했습니다. 루프가 테스트 코드에 있다고 가정합니다. 대신 테스트 할 코드에 있다면 테스트 가능성을 재 설계하여 각 메서드 호출을 확인하기 위해 루프 코드에 연결할 수 있습니다. – mtijn