ASP.NET サイト (MVC ではない) の単体テストを追加しようとしています。私がテストする必要があるメソッドの 1 つは、正確にはHttpRequest Request
オブジェクトを利用します。Request.Path
Visual Studio 2008 の組み込みのテスト フレームワークを使用してテストを作成しようとしています。テストが問題のメソッドを実行するたびに、System.Web.HttpExecption: Request is not Available in this context
. 利用できない理由 (実行中の Web サーバーがなく、パスが提供されていない) は理解していますが、メソッドのテストを続行するにはどうすればよいですか?
誰もがコードを見るのが好きなので、問題のコードは次のとおりです。
protected string PageName
{
get
{
return Path.GetFileName(Request.Path).Substring(0, Path.GetFileName(Request.Path).Length - 5);
}
}
protected Change SetupApproval(string changeDescription)
{
Change change = Change.GetInstance();
change.Description = changeDescription;
change.DateOfChange = DateTime.Now;
change.Page = PageName;
return change;
}
テストは次のとおりです。
[TestMethod]
public void SetupApproval_SubmitChange_ValidateDescription()
{
var page = new DerivedFromInternalAppsBasePage_ForTestingOnly();
var messageToTest = "This is a test description";
var change = page.SetupApproval(messageToTest);
Assert.IsTrue(messageToTest == change.Description);
}
さらに、Microsoft のドキュメント ( http://msdn.microsoft.com/en-us/library/ms182526(v=vs.90).aspx[HostType("ASP.NET")]
) を読み、提案されている、[UrlToTest(http://localhost:port/pathToAspxPage.aspx")]
、および[AspNetDevelopmentServer("C:\PathToDllAssembly", "NotSureParameter")]
属性を
使用してみましたが、運がない。(ご覧のとおり、いくつかのパラメーターに何を使用すればよいかわかりません。)
最後に、Phil Haack の TestWebServer http://haacked.com/archive/2006/12/12/Using_WebServer.WebDev_For_Unit_Tests.aspxを試し
、Scott Hanselman の投稿http://www.hanselman.com/blog/NUnitUnitTestingOfASPNETPagesBaseClassesControlsAndOtherWidgetryUsingCassiniASPNETWebMatrixVisualStudioWebDeveloper.aspxを読みました
。フィルのサーバー、ExtractResource
メソッドのパラメーターに何を使用するかわかりません。