偽のHttpContextが必要な単体テストを書いています。Phil Haack(http://haacked.com/archive/2007/06/19/unit-tests-web-code-without-a-web-server-using-httpsimulator.aspx)のHttpSimulatorを使用しました。ただし、Sitecore APIの関数は、次のコードで例外をスローします。
request.Browser.Browser.IndexOf("IE", StringComparison.OrdinalIgnoreCase) > -1;
コードをデバッグしましたが、request.Browser.Browserが空です。プロパティをMoqで埋めようとしましたが、例外が発生します。また、ヘッダーとして追加してみました。
私のコードは次のようになります:
using (HttpSimulator simulator = new HttpSimulator("/", "localpath"))
{
//NameValueCollection nvc = new NameValueCollection { { "User-Agent", "IE" } };
//simulator.SimulateRequest(new Uri("http://www.foo.bar"), HttpVerb.GET, nvc);
simulator.SimulateRequest();
var browserMock = new Mock<HttpBrowserCapabilities>();
browserMock.SetupAllProperties();
//browserMock.SetupProperty(b => b.Browser, "IE");
HttpContext.Current.Request.Browser = browserMock.Object;
}
このプロパティをモックする方法を知っている人はいますか?