我正在尝试创建一个自定义的IHttpActionResult类型,用于在Web API 2中返回HTML内容而不是JSON。我遇到的问题是如何对返回新的ActionResult类型的ApiController进行单元测试。许多示例都告诉你将其转换为OkNegotiatedContentResult,然后读取其中的content属性,但这在我的情况下似乎无效。当我调试测试时,ExecuteAsync中的代码块似乎从未被调用过。我需要在我的单元测试中明确执行此操作吗?非常感谢您的帮助。
这是我的ActionResult的样子:
这是我的ActionResult的样子:
public class HtmlActionResult : IHttpActionResult
{
String _html;
public HtmlActionResult(string html)
{
_html = html;
}
public Task<System.Net.Http.HttpResponseMessage> ExecuteAsync(System.Threading.CancellationToken cancellationToken)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StringContent(_html );
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("text/html");
return Task.FromResult(response);
}
}
这是我的ApiController。
public class HomeController : ApiController
{
public IHttpActionResult Get(string page)
{
return new HtmlActionResult("<html></html>");
}
}
这是我的测试方法
[TestMethod]
public async Task Get()
{
//Arrenge
HomeController controller = new HomeController();
//Act
IHttpActionResult result = controller.Get();
//Assert
//Assert.IsNotNull(result.Content);
}