Ich kann Komponententests für MvcMailer mit der Visual Studio-Testsuite und Moq nicht erfolgreich ausführen. Ich habe das Beispiel aus dem Wiki Wort für Wort kopiert, aber jedes Mal die folgende Ausnahme:
%Vor%Der Code ist wie folgt: (Mit dem VS-Unit-Testframework - genau der gleiche Fehler bei der Verwendung von nUnit wie im Beispiel)
%Vor%Fehler in der folgenden Zeile in der Welcome () -Methode (direkt aus dem Wiki kopiert):
%Vor%Das Wiki ist hier: Ссылка
Ähnlich (fast genau dasselbe) Frage: MvcMailer: NUnit-Tests auf Razor-Ansichten, die Url.Action verwenden, können nicht abgeschlossen werden
Wer weiß, wie man das beheben kann? Die verknüpfte Frage besagt, dass ich die PopulateBody-Methode, die ich gemacht habe, nachahmen muss (gemäß Wiki).
Eine Problemumgehung besteht darin, den Code folgendermaßen zu ändern:
PopulateBody(mailMessage, "Welcome", null);
Dies wird funktionieren, weil Sie eine Schein-Installation für diese Überladung von PopulateBody haben und nicht für die 2-Parameter-Version davon.
Eine schnelle Ergänzung zu Filips Antwort, die jemand hilfreich finden könnte: Ich verwende die Version 4.0 des MvcMailer-Pakets. Ich habe die Populate(Action<MvcMailMessage> action)
-Methode in meinen Mailer-Aktionen verwendet und festgestellt, dass sie eine vier -Parameterversion von PopulateBody
:
Als solche habe ich festgestellt, dass der Mock mit vier Parametern eingerichtet wurde ...
%Vor%... hat es geschafft.
Sie müssen wahrscheinlich auch HttpContext vortäuschen. Sie können dies tun, indem Sie ein HttpContextBase-Mock-Objekt erstellen und es Ihrem Controller-Objekt zuweisen.
Tags und Links asp.net-mvc-3 unit-testing moq mvcmailer