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

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를 반환합니까?



답변

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

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

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


답변

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

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


답변

다음을 시도 할 수 있습니다.

https://7pass.wordpress.com/2014/05/20/moq-setup-and-ignore-all-arguments/

허용합니다 :

mock
.SetupIgnoreArgs(x => x.Method(null, null, null)
.Return(value);


답변