it-swarm-id.com

Metode tiruan Moq tanpa menentukan parameter input

Saya memiliki beberapa kode dalam pengujian menggunakan Moq:

public class Invoice
{
    ...

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

Jadi dalam unit test saya mencoba untuk mengejek metode ini dan membuatnya kembali benar

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

Apakah ada cara untuk menulis baris ini sehingga saya tidak perlu menentukan input ke IsInFinancialYear. yaitu. Jadi itu tidak dalam kode apa parameter input itu akan mengembalikan true apa pun yang diteruskan ke sana?

119
AnonyMouse

Anda dapat menggunakan It.IsAny<T>() untuk mencocokkan nilai apa pun:

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

Lihat bagian Argumen Pencocokan pada awal yang cepat.

200
Jeff Ogata

Coba gunakan It.IsAny<FinancialYearLookup>() untuk menerima argumen apa pun:

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

Anda dapat mencoba yang berikut ini:

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

Memungkinkan:

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