web-dev-qa-db-de.com

Moq-Mock-Methode ohne Angabe von Eingabeparametern

Ich habe Code in einem Test mit Moq:

public class Invoice
{
    ...

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

In einem Unit-Test versuche ich, diese Methode zu verspotten und sie als wahr zurückzugeben

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

Gibt es sowieso, um diese Zeile zu schreiben, damit ich die Eingabe nicht für IsInFinancialYear angeben muss. dh Damit es im Code nicht stimmt, was der Eingabeparameter ist, wird true zurückgegeben, was auch immer an ihn übergeben wird?

119
AnonyMouse

Sie können It.IsAny<T>() verwenden, um jedem Wert zu entsprechen:

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

Siehe den Abschnitt Matching Arguments der Schnellstartanleitung.

200
Jeff Ogata

Versuchen Sie, mit It.IsAny<FinancialYearLookup>() ein Argument zu akzeptieren:

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

Sie können Folgendes versuchen:

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

Erlaubt:

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