我必须使用 Rhino.Mock 在 ASP.NET MVC Web API 控制器上编写单元测试我有一个名为 AHandler.cs 的处理程序,其中包含 System.Net.Http.HttpClientHandler 类的继承。AHandler.cs的singnature 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”并得到我想要的手工响应结果。但是当我编写以下代码时,Rhino 模拟似乎看不到“base”关键字:
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 处理程序中做出自定义响应?!很感谢 !!