Je ne peux pas exécuter avec succès des tests d'unité pour MVCMailer à l'aide de la suite Visual Studio Test et MOQ. J'ai copié l'exemple du mot wiki pour mot, mais obtenez l'exception suivante à chaque fois:
PopulateBody(mailMessage, viewName: "Welcome");
4 Réponses :
Vous devez probablement vous moquer de httpcontext aussi. Vous pouvez le faire en créant un objet de httpcontextbasebasebasebasebasebasebasebasebasebasebasebasebase et l'attribuez à votre objet de contrôleur. P>
J'essaie simplement de tester le mailer pour l'instant, pas le contrôleur qui utilise le mailer (si cela fait toute différence!).
Je suppose que cela est dû à que vous réaffectant un nouveau simulateur dans la variable _usermailermock de code> et ne moquez donc pas la méthode code> populate code>.
var _userMailerMock = new Mock<UserMailer>();
_userMailerMock.Setup(mailer => mailer.PopulateBody(It.IsAny<MailMessage>(), "Welcome", null));
_userMailerMock.CallBase = true;
Oups j'ai collé le code dans Stackoverflow incorrectement. Il n'y a qu'une seule affectation à l'utilisateur Mailermock dans le code. Toujours la même erreur.
Une solution de contournement consiste à modifier votre code à ceci: p>
Cela fonctionnera car vous avez une configuration moqueuse pour cette surcharge de population et non pour la version 2 paramètres .. P> populatebody (Mailmessage, "Bienvenue", NULL); Code> P>
Un ajout rapide à la réponse de Filip que quelqu'un pourrait trouver utile: j'utilise la version 4.0 du package MVCMailer. J'utilisais l'action En tant que tel, j'ai trouvé que la configuration de la simule avec quatre paramètres ... P> peupluler (action
PopulateBody(mailMessage, "Welcome", "SomeMasterName", null);
Merci! Le wiki doit être mis à jour à la nouvelle version. Bon travail
Ce Le problème a été signalé à l'équipe de courrier MVC mais a été fermé sans résolution. Est-ce que quelqu'un a une solution de contournement / solution?
@Josh, malheureusement, je n'ai toujours pas trouvé de solution ou de contournement. Devinez ce bug est entre les mains du courrier MVC Devs ...
une solution de contournement consiste à changer votre code à ceci:
populatebodody (Mailmessage, "Bienvenue", NULL); CODE> Cela fonctionnera car vous avez une configuration moqueuse pour cette surcharge de population et non pour la version 2 paramètres de ce..
@FILIPCORNISISEN: Enfin une solution qui a fonctionné! Merci mon pote... :)
@Filipcornissen ne voulez-vous pas poster votre commentaire comme une réponse afin que je puisse l'accepter?
fait, maintenant, cela peut aider le reste du monde ;-)