Giriş parametresi belirtilmeden Moq mock yöntemi


135

Moq kullanarak bir testte bazı kodum var:

public class Invoice
{
    ...

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

Yani bir birim testinde bu yöntemle dalga geçmeye ve gerçeğe dönmesini sağlamaya çalışıyorum

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

Zaten bu satırı yazmak için var mı, böylece girdiyi belirtmek zorunda kalmam IsInFinancialYear. yani. Girdi parametresinin kodda olmaması için, kendisine geçirilen her ne olursa olsun, true değerini döndürecektir?

Yanıtlar:


229

It.IsAny<T>()Herhangi bir değeri eşleştirmek için kullanabilirsiniz :

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

Hızlı başlangıcın Eşleşen Bağımsız Değişkenler bölümüne bakın .


5
Bu cevabın eski olduğunun farkındayım ama ya birden fazla basit parametrem varsa? "Türlerin tüm parametrelere uyduğu herhangi bir şey" demek mümkün mü?
Brandon

6
@Brandon Sonra her parametre için bir It.IsAny <type> () var, burada type, param ne tür olursa olsun. İsterseniz muhtemelen bunu sizin için yansıtma yoluyla yapan bir yardımcı işlev yazabilirsiniz.
user441521


3
Buradaki diğer yorumlarla aynı fikirde olun: önemsiz olmayan herhangi bir yöntem için bunu yazmak büyük bir acıdır.
John Hargrove

Bunu yapan herhangi bir yardımcısı olan var mı? Ya da her yöntem için bir yardımcı yazmalısın /
Meysam

18

It.IsAny<FinancialYearLookup>()Herhangi bir argümanı kabul etmek için kullanmayı deneyin :

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.