我必须在ASP.NET MVC Web API控制器上使用Rhino.Mock编写单元测试 有一个名为AHandler.cs的处理程序,其中包含来自System.Net.Http.HttpClientHandler类的入侵。 AHandler.cs的singnature SendAsync方法是像如下:上述如何从MVC4.5 Web API处理程序中的base.SendAsync()模拟(rhino.mocks)响应对象SendAsync()方法
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
.....
var response = base.SendAsync(request, cancellationToken).Result;
if (response.IsSuccessStatusCode)
{
.....
}
}
base关键字装置HttpClientHandler及其SendAsync()方法是 “受保护”! 现在我试着嘲笑对象“base.SendAsync(request,cancellationToken).Result”,并得到我想要的手工响应结果。 但似乎犀牛制品不能看到“基地”关键字时,我写了如下代码:
var mockbase = MockRepository.GenerateMock<AHandler>;
mockbase.Stub(x => x.base <=== can't see base keyword
^^^^^
所以我改变另一种方式,并尝试嘲笑HttpClientHandler类
var mockbase = MockRepository.GenerateMockHttpClientHandler>;
mockbase.Stub(x => x. <== I can't see SendAsync() method, becase it is protected !!
现在我真的受苦了! 任何人都可以给我一些建议,如何在MVC处理程序中做出自定义响应?! 非常感谢!