103 votes

Méthode Returns d'objets moq, devrait renvoyer un objet nul

Je développe une API Web, et l'un des tests que j'ai mis en place est que, si le client effectue une opération GET avec un ID de Test Physique (Test Physique étant la ressource que je recherche) et que ce test physique n'est pas trouvé, l'API Web doit renvoyer un statut 404.

Maintenant, j'utilise le framework moq pour mes tests et j'ai le code suivant :

[TestMethod]
public void then_if_physical_test_not_found_return_not_found_status()
{
    var unitOfWork = new Mock();
    var repository = new Mock>();
    repository.Setup(r => r.FindById(It.IsAny())).Returns();
    unitOfWork.Setup(m => m.PhysicalTests).Returns(repository.Object);
    var pt = new PhysicalTestResource(unitOfWork.Object);
    HttpResponseMessage response = pt.GetPhysicalTest(43);
    Assert.AreEqual(HttpStatusCode.NotFound, response.StatusCode)
}

J'ai besoin que la méthode Returns() renvoie un objet null, qui sera ce que la méthode API réelle retournera si la ressource n'est pas trouvée.

J'ai essayé d'envoyer null en tant que paramètre dans la méthode Returns() mais sans succès.

0voto

Vous pourriez essayer ceci:

ref1.Setup(s => s.Method(It.IsAny(), It.IsAny()))
     .Returns((Task)null);

ref1 = Mock Interface
Ref2 = Type request parameter
Ref3 = Type of return method mock

0voto

Ali Jamal Points 21

Vous êtes trop proche, vous avez seulement besoin de passer le type de retour en tant que type générique comme ceci

repository.Setup(r => r.FindById(It.IsAny())).Returns>(null);

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