2010-12-05 2 views
2

Ich habe James Broome's tutorial verfolgt, um MSpec und einige der damit verbundenen Infrastruktur zu lehren. Ich verwende die neueste Version von MSpec, MSpecMvc und ASP.NET MVC 2, und ich verwende nicht J.P Boodhoo-Bibliotheken.Warum schlägt ViewResult die MSPecMVC-ShoulBeAView-Assertion fehl?

Wenn ich laufen diesen Test

[Subject(typeof(HomeController))] 
public class when_the_home_controller_is_told_to_display_the_default_view 
{ 
    static string key; 
    static string message; 
    static ActionResult result; 
    static HomeController home_controller; 

    Establish context =() => 
    { 
     key = "Message"; 
     message = "Welcome to ASP.NET MVC!"; 
     home_controller = new HomeController(); 
    }; 

    Because of =() => result = home_controller.Index(); 

    It should_return_the_home_view =() => result.ShouldBeAView().And().ViewName.ShouldBeEmpty(); 
} 

ich die folgende Fehlermeldung erhalten

die Home-Ansicht zurückkehren sollte: Fehler
vom Typ System.Web.Mvc.ViewResult sein sollte, aber ist von type System.Web.Mvc.ViewResult

Wenn ich durch den Code gehe, steckt er in der Behauptung in dieser Methode ein (In der ActionResultExtensions.cs Datei von MSpecMVC)

public static ViewResultAnd ShouldBeAView(this ActionResult actionResult) 
{ 
    actionResult.ShouldBeOfType<ViewResult>(); 
    return new ViewResultAnd(actionResult as ViewResult); 
} 

Obwohl, kann ich bestätigen, dass actionResult vom Typ System.Web.Mvc.ViewResult. Ich habe die gleichen Tools auf einem anderen Computer verwendet, um andere Tests auszuführen, aber das aktuelle Problem ist nicht aufgetreten.

Antwort

3

James Broome MSpec.MVC Erweiterungen verwenden Mspec v0.2. Da Sie Mspec v0.3 verwenden, gibt es eine Nichtübereinstimmung. Sie sollten die Quelle abrufen und die Lösung aktualisieren, um MSpec v0.3 zu verwenden.

Stellen Sie sicher, dass die Erweiterungen von Mspec.MVC auf dieselbe .NET Framework-Version wie Ihre ASP.NET MVC-Lösung abzielen (z. B. beide 4.0). Dies hängt auch davon ab, welche Version von MSpec Sie verwenden. MSpec v0.3 ist kompiliert gegen .NET 3.5 und .NET 4.0

+0

Hallo Sergi, ich habe tatsächlich James Quellcode und führte die Ersetzung der neuesten Version von MSpec, d. H. 0,3 Ich werde versuchen, sicherzustellen, dass ich gegen 4.0 kompiliere. Danke für deinen Beitrag. – DavidS

+0

Kein Problem. Lass mich wissen, wie es funktioniert hat! :) –

+0

Hey Sergi, was ich beendet habe, war dem zu folgen, was du gesagt hast. Ich stellte sicher, dass ich mit den richtigen Versionen des .NET-Frameworks kompilierte und es funktionierte dieses Mal. :) – DavidS

Verwandte Themen