2016-10-30 1 views
1

Moq Setup을 동일한 값을 가진 두 배열을 인식하도록하려면 어떻게합니까?Moq 설정이 값이있는 배열을 인식하도록하십시오

매개 변수로 문자열 목록을 사용하는이 메서드가 있습니다.

class Hospital{ 
    Patient[] GetPatients(DateTime[] dates){ 
     ... 
    } 
} 

I 설정 I 정확한 매개 변수가 필요 모의.

var hospital= new Mock<Hospital>(MockBehavior.Strict); 
hospital.Setup(m => m.GetPatients(new [] { new DateTime(2016,10,30) })); 

그런 다음, 내 피고에 전화를합니다.

hospital.GetPatients(new [] { date }); // date is DateTime(2016,10,30). 

내 모의을 인식하지 못합니다.
두 배열이 동일한 것으로 간주하지 않으므로 Equals과 같은 자연스러운 값입니다.
하지만 어떻게 만들 수 있습니까?

답변

0

내 용액이었다 It.Is<>(=>)

var hospital= new Mock<Hospital>(MockBehavior.Strict); 
hospital.Setup(m => m.GetPatients(
    It.Is<DateTime[]>(d => AreEqual(d))); 

및 헬퍼 메소드 같은 It.Is에 넣어 람다 (그것이 가능 실현할)

bool AreEqual(DateTime[] dates){ 
    return dates.Counts == 1 
     && dates[0] == new DateTime(2016, 10, 30); 
} 
관련 문제