Web API帖子在Fiddler中返回错误请求但在单元测试中返回Ok

时间:2015-07-09 20:02:14

标签: c# asp.net-web-api asp.net-web-api2

我正在尝试编写一个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"
        };
    }
}

测试失败:

Failing test

0 个答案:

没有答案