我创建了一个类如下
public class Response<T> : IHttpActionResult where T : class
{
private readonly T _body;
....
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
HttpResponseMessage msg = new HttpResponseMessage();
switch (_httpStatus)
{
case HttpResponseStatus.Ok:
{
msg = _request.CreateResponse(HttpStatusCode.OK, _body);
break;
}
case HttpResponseStatus.BadRequest:
{
msg = _request.CreateResponse(HttpStatusCode.BadRequest, _body);
break;
}
...
return Task.FromResult(msg);
}
}
这是我在web api调用中返回IHTTPActionResult的基类。 它适用于我所需要的。
我现在使用MSTest设置了一些单元测试。
// Act
IHttpActionResult result = controller.Step1();
// Assert
Assert.IsNotNull(result, "Is null when it shouldnt be");
Assert.IsInstanceOfType(result, typeof(Response<BodyContent<LogingActivityResult>>), "Is not expected IsInstanceOfType");
这两个断言都可以正常工作。 但是我现在想要实际获得@我的回复中保存的数据,并声称它们没问题,即:正确的值,计数等,但我没有运气。 我已经尝试了所有各种System.Web.Http.Results类型,如
var contentResult = result as OkNegotiatedContentResult<Response<BodyContent<LogingActivityResult>>>;
或
var contentResult = result as FormattedContentResult<Response<BodyContent<LogingActivityResult>>>;
但当我将鼠标悬停在contentResult变量上时,这两个都为null。
有人能引导我朝正确的方向前进吗?
由于
答案 0 :(得分:0)
我设法解决了这个..我上面的类中的属性_body被设置为PRIVATE,因此我无法在我的单元测试类中访问它。将其设置为PUBLIC解决了它,并且能够访问响应中返回的数据。