web-dev-qa-db-ja.com

入力パラメーターを指定しない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を返しますか?

119
AnonyMouse

It.IsAny<T>()を使用して、任意の値に一致させることができます。

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

クイックスタートの Matching Arguments セクションを参照してください。

200
Jeff Ogata

It.IsAny<FinancialYearLookup>()を使用して、引数を受け入れてみてください。

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

以下を試すことができます:

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

許可:

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