मैं Watin का उपयोग कर specflow परीक्षण लिख रहा हूँ, जो T4MVC का उपयोग करता है एक Asp.Net MVC आवेदन के लिए।का उपयोग Asp.Net MVC मार्गों (परीक्षण)
मैं टेस्ट मैचों में "जादू स्ट्रिंग" यूआरएल, जो मुझे पसंद नहीं है का उपयोग करते हुए अपने आप को लगता है।
[Given(@"I am on the sign up page")]
public void GivenIAmOnTheSignUpPage()
{
string rootUrl = ConfigurationManager.AppSettings["RootUrl"];
string fullUrl = string.Format("{0}/Authentication/Signup",rootUrl);
WebBrowser.Current.GoTo(fullUrl);
}
मैं बहुत बल्कि मेरी T4MVC कार्रवाई परिणाम का प्रयोग करेंगे जैसे मैं MVC अनुप्रयोग में कुछ इस तरह करते हैं, ...
[Given(@"I am on the sign up page")]
public void GivenIAmOnTheSignUpPage()
{
WebBrowser.Current.GoTo(MVC.Authentication.SignUp().ToAbsoluteUrl());
}
मेरे ToAbsoluteUrl
एक्सटेंशन विधि
public static class RouteHelper
{
private static UrlHelper _urlHelper;
private static string _rootUrl;
public static string ToAbsoluteUrl(this ActionResult result)
{
EnsureUrlHelperInitialized();
var relativeUrl = _urlHelper.Action(result);
return string.Format("{0}/{1}", _rootUrl, relativeUrl);
}
private static void EnsureUrlHelperInitialized()
{
if (_urlHelper==null)
{
_rootUrl = ConfigurationManager.AppSettings["RootUrl"];
var request = new HttpRequest("/", _rootUrl, "");
var response = new HttpResponse(new StringWriter());
var context = new HttpContext(request,response);
HttpContext.Current = context;
var httpContextBase = new HttpContextWrapper(context);
RouteTable.Routes.Clear();
MvcApplication.RegisterRoutes(RouteTable.Routes);
var requestContext = new RequestContext(httpContextBase, RouteTable.Routes.GetRouteData(httpContextBase));
_urlHelper = new UrlHelper(requestContext, RouteTable.Routes);
}
}
}
क्या है RequestContext और रूट कोलेक्शन को प्रारंभ करने का सही तरीका ताकि मैं अपना परीक्षण यूआरएल उत्पन्न कर सकूं?
वर्तमान में मैं लाइन var requestContext = new RequestContext(httpContextBase, RouteTable.Routes.GetRouteData(httpContextBase));
पर एक NullReferenceException प्राप्त करते हैं। क्या अनुरोध को नया करने का सही तरीका है?
या यदि कोई एक्शन रिसेट (टी 4 एमवीसी से) लेने के लिए एक बेहतर तरीका है और इसे एक वेब एप के बाहर एक पूर्ण यूआरएल में हल करें, तो यह वास्तव में मैं जो खोज रहा हूं।
स्पेकफ़्लो के साथ आप किस यूनिट टेस्ट लिब का उपयोग कर रहे हैं? MsTest, NUnit, या कुछ और? – danludwig
मैं xUnit का उपयोग कर रहा हूं, क्या इससे कोई फर्क पड़ता है? – Brook
नहीं, मैं सोच रहा था इसलिए मैं अपना जवाब कस्टमाइज़ कर सकता था। मुझे यकीन नहीं है कि xunit समकक्ष [टेस्ट क्लास] और [विधानसभा आरंभ] के लिए क्या हैं, लेकिन कल्पना करें कि यह पता लगाना मुश्किल नहीं है। – danludwig