는 쉽게 설명 할 수 있도록 예측 가능한, 내가 코드MOQ 것은 사용하기 위해 호출됩니다
내가FunctionA()
가 기본
IAnother.DoAnotherJob()
를 호출 할 때 확인하기 위해 단위 테스트 코드를 작성해야
public interface IAnother
{
void DoAnotherJob(DateTime date);
}
public class MainJob
{
private IAnother another;
public MainJob(IAnother another)
{
this.another = another;
}
public void FunctionA()
{
this.FunctionB(DateTime.Now);
}
public void FunctionB(DateTime date)
{
this.another.DoAnotherJob(date);
}
}
다음하지 특정 값을 확인합니다 현재 날짜 시간.
나는
[TestMethod()]
public void FunctionATest()
{
var mockAnother = new Mock<IAnother>();
var mainJob = new MainJob(mockAnother.Object);
mainJob.FunctionA();
mockAnother.Verify(x => x.DoAnotherJob(It.IsAny<DateTime>()), Times.Once);
}
이 함수가 어떤 날짜 시간 호출되어 있는지 확인하는 테스트 코드를 작성할 수 있습니다,하지만 난 DateTime
의 실제 값이 예측되지 않기 때문에 정확한 값을 지정하는 방법이 없습니다.
아이디어가 있으십니까?
Roy Osherove는 [The Art of Unit Testing] (http://www.amazon.com/The-Art-Unit-Testing-examples/dp/1617290890) (페이지 134)에서 'SystemTime' 클래스는'.Now'와'.Now'가 반환하는 것을 설정하는 테스트 방법을 제공합니다. 거기에서 모든 것이 그 클래스를 대신 사용하는지 확인하는 것입니다. – chris