我正在使用 RhinoMocks 进行测试。它不擅长重定向静态;我考虑过使用另一个库,例如 Moles 的继任者(编辑:我猜 Fakes 工具仅在 VS2012 中可用?那很臭)或 TypeMock,但不希望这样做。
我有一个接收 HttpRequest 对象的第三方库。我的第一次尝试是使用:
public void GetSamlResponseFromHttpPost(out XmlElement samlResponse,
out string relayState, HttpContextBase httpContext = null)
{
var wrapper = httpContext ?? new HttpContextWrapper(HttpContext.Current);
// signature of the next line cannot be changed
ServiceProvider.ReceiveSAMLResponseByHTTPPost(
wrapper.ApplicationInstance.Context.Request, out samlResponse, out relayState);
一切看起来都很好,直到我去测试它。这里真正的问题是我需要存根wrapper.ApplicationInstance.Context.Request
。这导致了一整套老式的“ASP.NET 不喜欢测试”的痛苦。
我听说你可以dynamic
在 C# 中使用魔法来重定向静态方法。不过,找不到任何使用 HttpContext 之类的示例。这可能吗?