Moq фиктивный метод без указания входного параметра - PullRequest
117 голосов
/ 19 октября 2011

У меня есть код в тесте с использованием 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 независимо от того, что ему передано?

Ответы [ 3 ]

196 голосов
/ 19 октября 2011

Вы можете использовать It.IsAny<T>() для соответствия любому значению:

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

См. Раздел Соответствующие аргументы быстрого запуска.

16 голосов
/ 19 октября 2011

Попробуйте использовать It.IsAny<FinancialYearLookup>(), чтобы принять любой аргумент:

mockInvoice.Setup(x => x.IsInFinancialYear(It.IsAny<FinancialYearLookup>())).Returns(true);
4 голосов
/ 30 июня 2017

Вы можете попробовать следующее:

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

Позволяет:

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