我在预先存在的Visual Studio解决方案中创建了一个新的测试项目,并尝试模拟控制器,以便我可以测试路由。主要项目利用Combres来缩小css等。为了更好地展示问题,我将.AddCombresRoute放入测试中,产生我想要解决的错误。
private HttpContextBase rmContext;
private HttpRequestBase rmRequest;
[TestInitialize]
public void SetupTests()
{
// Setup Rhino Mocks
rmContext = MockRepository.GenerateMock<HttpContextBase>();
rmRequest = MockRepository.GenerateMock<HttpRequestBase>();
rmContext.Stub(x => x.Request).Return(rmRequest);
}
[TestMethod]
public void RhinoMocksRoutingTest()
{
// Arrange
RouteCollection routes = new RouteCollection();
RouteConfig.RegisterRoutes(routes);
rmRequest.Stub(e => e.AppRelativeCurrentExecutionFilePath).Return("~/Home/Index");
// Act
routes.AddCombresRoute("Combres Route"); *** ERRROR HERE ***
RouteData routeData = routes.GetRouteData(rmContext);
// Assert
Assert.IsNotNull(routeData);
Assert.AreEqual("Home",routeData.Values["controller"]);
Assert.AreEqual("Index",routeData.Values["action"]);
}
尽管做了正确的引用,确保combres.xml和combres.xsd在App_Data中(并复制到本地)并将相关条目放入app.config中,当我运行测试时出现以下错误:
ArgumentNullException未被用户代码处理。类型例外 System.Xml.dll中发生的'System.ArgumentNullException'没有 用户代码处理。附加信息:值不能为空。