我必須在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處理程序中做出自定義響應?! 非常感謝!