Méthode Moq mock sans spécifier de paramètre d'entrée


133

J'ai du code dans un test utilisant Moq:

public class Invoice
{
    ...

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

Donc, dans un test unitaire, j'essaie de me moquer de cette méthode et de la rendre vraie

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

Est-il possible d'écrire cette ligne pour ne pas avoir à spécifier l'entrée IsInFinancialYear. c'est à dire. Pour qu'il ne soit pas dans le code quel est le paramètre d'entrée, il retournera vrai tout ce qui lui est passé?

Réponses:


227

Vous pouvez utiliser It.IsAny<T>()pour faire correspondre n'importe quelle valeur:

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

Consultez la section Arguments correspondants du démarrage rapide.


5
Je me rends compte que cette réponse est ancienne, mais que faire si j'ai plus d'un paramètre simple? Est-il possible de dire simplement "Quelque chose où les types correspondent à tous les paramètres"?
Brandon

6
@Brandon Ensuite, vous avez un It.IsAny <type> () pour chaque paramètre où type est le type de ce paramètre. Si vous le souhaitez, vous pouvez probablement écrire une fonction d'assistance qui le fait pour vous via la réflexion.
user441521


3
D'accord avec les autres commentaires ici: taper ceci pour toute méthode non triviale est une douleur majeure.
John Hargrove

Quelqu'un a-t-il une aide pour faire cela? Ou vous devez écrire pour chaque méthode un assistant /
Meysam

18

Essayez d'utiliser It.IsAny<FinancialYearLookup>()pour accepter n'importe quel argument:

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.