입력 매개 변수를 지정하지 않은 Moq 모의 메소드


133

Moq를 사용하는 테스트에 코드가 있습니다.

public class Invoice
{
    ...

    public bool IsInFinancialYear(FinancialYearLookup financialYearLookup)
    {
        return InvoiceDate >= financialYearLookup.StartDate && InvoiceDate <= financialYearLookup.EndDate;
    }
    ...
}

따라서 단위 테스트 에서이 방법을 조롱하여 true로 반환하려고합니다.

mockInvoice.Setup(x => x.IsInFinancialYear()).Returns(true);

어쨌든이 줄을 작성하여 입력을에 지정할 필요가 없습니다 IsInFinancialYear. 즉. 그래서 입력 매개 변수가 무엇인지 코드에 포함되지 않도록 전달 된 것이 무엇이든 true를 반환합니까?

답변:


227

It.IsAny<T>()모든 값을 일치시키는 데 사용할 수 있습니다 .

mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true);

빠른 시작 의 일치하는 인수 섹션을 참조하십시오 .


5
나는이 대답이 오래되었다는 것을 알고 있지만 하나 이상의 간단한 매개 변수가 있으면 어떻게해야합니까? "유형이 모든 매개 변수에 적합한 위치"라고 말할 수 있습니까?
Brandon

6
@Brandon 그런 다음 각 매개 변수에 대해 It.IsAny <type> ()이 있습니다. 여기서 type은 해당 매개 변수 유형입니다. 원한다면 리플렉션을 통해이 작업을 수행하는 도우미 함수를 작성할 수 있습니다.
user441521


3
여기에 다른 의견에 동의하십시오 : 사소한 방법으로 이것을 입력하는 것은 큰 고통입니다.
John Hargrove

누구든지 이것을하는 도우미가 있습니까? 또는 각 단일 메소드마다 헬퍼를 작성해야합니다.
Meysam

18

It.IsAny<FinancialYearLookup>()인수를 수락하는 데 사용하십시오 .

mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true);

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.