146 votes

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

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);

Y a-t-il de toute façon pour écrire cette ligne afin que je n'aie pas à 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é?

248voto

adrift Points 24386

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

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

Voir la section Arguments correspondants du démarrage rapide.

19voto

jeha Points 5463

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

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

14voto

NDC Points 523

Vous pouvez essayer ce qui suit :

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

Permet:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X