我正在尝试编写一个Web API,我们的客户可以将提交数据发布给我们以供将来验证。我有这个(非常简化的)类,这是用户发给我们的:
public class ClientSubmission
{
[Required]
[StringLength(maximumLength: 40)]
public string ApiKey { get; set; }
[StringLength(maximumLength: 250)]
public string Name { get; set; }
}
这是我的API控制器:
public class RebateController : ApiController
{
[HttpPost] // This is probably unnecessary but it's in the code so I put it here
public IHttpActionResult New(ClientSubmission content)
{
if (ModelState.IsValid)
{
return Ok(content);
}
return BadRequest(ModelState);
}
}
在Fiddler中,当我传递一个带有ApiKey
的JSON对象时,我得到了该对象,当我没有时,我得到了ModelState错误 - 正是我所期待的!但是,在我的两个单元测试中,我得到了OkNegotiatedContentResult<ClientSubmission>
两个测试。我做错了什么?
[TestClass]
public class RebateControllerTest
{
private readonly RebateController _controller;
public RebateControllerTest()
{
_controller = new RebateController();
}
[TestMethod]
public void ValidApiReturnsOk()
{
var payload = GetDefault();
var actionResult = _controller.New(payload);
Assert.IsInstanceOfType(actionResult, typeof (OkNegotiatedContentResult<ClientSubmission>));
}
[TestMethod]
public void NullApiReturnsBadRequest()
{
var payload = GetDefault();
payload.ApiKey = null;
var actionResult = _controller.New(payload);
Assert.IsInstanceOfType(actionResult, typeof (BadRequestResult));
}
private static ClientSubmission GetDefault()
{
return new ClientSubmission
{
ApiKey = "test api key",
Name = "first name"
};
}
}
测试失败: