我在预先存在的 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”的异常未在用户代码中处理。附加信息:值不能为空。