2011-10-19 10 views
91

Tengo algo de código en un ensayo efectuado Moq:método simulacro Moq con el parámetro de entrada a cabo especificando

public class Invoice 
{ 
    ... 

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

Así que en una prueba de unidad que estoy tratando de burlarse de este método y hacerlo volver verdadera

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

De todos modos hay que escribir esta línea, así que no tengo que especificar la entrada a IsInFinancialYear. es decir. Para que no aparezca en el código cuál es el parámetro de entrada, ¿devolverá verdadero lo que se le pase?

Respuesta

161

Puede utilizar It.IsAny<T>() para que coincida con cualquier valor:

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

Consulte la sección Matching Arguments del comienzo rápido.

+1

Gracias por el enlace! – AnonyMouse

+4

Me doy cuenta de que esta respuesta es antigua, pero ¿qué ocurre si tengo más de un parámetro simple? ¿Es posible decir "Cualquier cosa donde los tipos se ajusten a todos los parámetros"? – Brandon

+1

@Brandon Luego tiene un It.IsAny () para cada parámetro donde type es de cualquier tipo que sea param. Si lo desea, probablemente podría escribir una función auxiliar que lo haga por usted a través de la reflexión. – user441521

16

Trate de usar It.IsAny<FinancialYearLookup>() a aceptar cualquier argumento:

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