既存の Visual Studio ソリューションで新しいテスト プロジェクトを作成し、ルーティングをテストできるようにコントローラーをモックしようとしました。メイン プロジェクトでは、CSS の縮小などに Combres を使用しています。問題をよりよく示すために、解決しようとしているエラーを生成するテストに .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' 型の例外は、ユーザー コードで処理されませんでした。追加情報: 値を null にすることはできません。