J'essaie d'écrire des tests unitaires mais j'ai du mal à trouver comment déléguer des fonctions.Comment écrire ces tests unitaires?
L'application est une application MVC et les tests unitaires dépendent des données moc (ils n'utilisent pas la base de données).
Nous avons apporté une modification à l'un de nos services, et maintenant les tests unitaires qui testent ce service échouent. L'ajustement que je dois faire aux tests unitaires ne semble pas fonctionner, et c'est ce dont j'ai besoin d'aide.
Tout d'abord, voici comment cela a fonctionné avant le changement:
La fonction au service à tester:
public Project GetProject(int projectId)
{
return _context.Projects.Find(projectId);
}
Substituer la fonction de délégué dans nos tests unitaires:
protected override void Given()
{
GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.Projects.Find(1))
.Returns(GetTestProject(1));
}
Donc, essentiellement, nous disons que chaque fois que le service appelle context.Projects.Find(1)
, retourner le projet de simulation de GetTestProject(1)
.
Cela a bien fonctionné jusqu'à ce que nous avons fait notre changement:
public Project GetProject(int projectId)
{
return _context.Projects.Include("Report").FirstOrDefault(p => p.ProjectId == projectId);
}
Il ne semble pas que nous pouvons substituer une fonction de délégué aux appels à context.Projects.Include("report").FirstOrDefault(...)
, du moins pas de la même manière que context.Project.Find(...)
. Lorsque je tente de remplacer la fonction comme suit, je reçois un NotSupportedException
protected override void Given()
{
GetMockFor<IRiskAliveContext>()
.Setup(ctx => ctx.Projects.Include("Report").FirstOrDefault(p => p.ProjectId == 1))
.Returns(GetTestProject(1));
}
est-il une autre façon de substituer une fonction de délégué lorsque l'appel est à ... Inclure (...). FirstOrDefault (.. .)?
Vous essayez de méthodes d'extension simulées, ce qui est pas disponible dans le cadre moqueur utilisé. – Nkosi
Veuillez ajouter un peu de contexte - Quelle langue (C#?)? De plus, quels frameworks utilisez-vous? Par exemple, 'GetMockFor' vient d'où? Quels paquets avez-vous installés? – LightCC
La question dans son état actuel n'est pas claire car elle est incomplète. Lisez [ask] puis fournissez un [mcve] qui peut être utilisé pour mieux comprendre votre problème. – Nkosi