Frage

Ich möchte Unit-Test ein Verfahren wie folgt aus:

public ActionResult StoreFile(FormCollection form, string _paginaAtual)
{
     Session["MySession"] = 1
     if (Request.Files["uploadedFiles"] != null)
         {
             //do something about the file
         }
     return View()
}

Es ist in meiner "SomeController.cs" Controller-Klasse, und es wird aufgerufen, wenn der Benutzer sendet eine Datei in einem einfachen input type = "file" HTML-Eingabe.

P. S .: Puristen aufgepasst. Ich weiß, das ist keine „reine“ Unit-Tests, ich möchte nur die Methode in einer Testumgebung aufrufen und überprüfen, ob es de wünschenswerte Änderungen im System macht

Vielen Dank für jedes Licht in dem Thema, Lynx.

War es hilfreich?

Lösung

Zum Glück ist das ASP.Net-Team dachte darüber nach, bevor sie auf MVC gestartet und erstellt die System.Web.Abstractions Namespace. Es ist eine Reihe von Basisklassen, die die statischen Klassen spiegeln die traditionell wie die HttpWebRequest Klasse Test nicht möglich sind.

Was auf Sie verlassen sich auf eine dieser Basisklassen tun wollen und tun ein wenig Dependency Injection, um effektiv Ihre Sitzung verspotten.

HttpSessionStateBase _session;
public HttpSessionStateBase Session
{
    get{
        return _session ?? (_session = new HttpSessionStateWrapper(HttpContext.Current.Session));
    }
    set{
        _session = value;
    }
}

Wie für die Formcollection, Sie müssen es nicht verspotten, wie Sie in der Lage sein sollen, von einem Httpcontext eine auseinander zu erstellen. Es ist ein gutes Beispiel dafür, dass auf Marcus Hammarberg Blog .

Andere Tipps

Was Sie klingt eher wie Integrationstests sind zu beschreiben. Wie für Ihre Formcollection, wenn Sie es isolieren wollen, könnten Sie einen Isolations Framework wie RhinoMocks oder „Hand roll“ Ihre eigene Mock für sie verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top