WebApi控制器单元测试不适用于HttpResponseMessage

时间:2017-04-06 12:25:37

标签: controller asp.net-web-api2 xunit.net httpresponsemessage

我实际上有一段时间没有写任何单元测试,也许我只是摆脱了事情。我试图从我的WebApi中的控制器测试HttpResponseMessage。我没有错误,实际上测试完成了一个绿色检查,我觉得很奇怪,因为当我去调试它以仔细检查断言我意识到我没有碰到我的断言。这是我的测试。

[Fact]
    public void TestDudeManController()
    {
        //arrange
        DudeManModel dmmRequest =  new DudeManModel();
        DudeManModel dmmResponse = new DudeManModel();
        HttpResponseMessage hrm = new HttpResponseMessage();
        dmmRequest.Name = "Test-Duder";
        dmmResponse.Name = "Hey " + dmmRequest.Name + ", Im The Dude man.";
        var dudeController = new DudeManController();        
        dudeController.Request = new HttpRequestMessage();
        dudeController.Configuration = new HttpConfiguration();       

        //act
        hrm = dudeController.Dude(dmmRequest);

        //assert
        //Assert.Equal(4, 4);
        Assert.True(hrm.IsSuccessStatusCode);          

    }

这是控制器

[HttpPost]
    [Route("dude")]
    public HttpResponseMessage Dude([FromBody]DudeManModel name)
    {
        log.Info("WEBAPI POST INITIATED::NAME IS::" + name.Name);

        name.Name = "Hey " + name.Name + ", Im The Dude man.";
        name.Link = "dude.png";

       log.InfoFormat("WEBAPI POST UPDATED::NAME IS::{0}::PIC IS::{1}", name.Name, name.Link);

        return Request.CreateResponse(HttpStatusCode.OK, name);
    }

基本上我到了这行'dudeController.Configuration = new HttpConfiguration();'就是这样。测试结束了。测试标记为已通过。

这是一个标准的.Net Framework WebApi和Im使用xUnit进行测试。任何想法为什么我的测试将这条线作为一个成功的测试,我真的很感激一些帮助。到目前为止,我在搜索中找不到太多内容。

*****声明

万一有人想知道,这个测试控制器并不奇怪。代码本身只是对电影The Big Lebowski的致敬。他永远都是'The Dude'。但是阅读我的代码,我现在看到它看起来确实有点滑稽。

1 个答案:

答案 0 :(得分:0)

所以这很奇怪但我把我的项目设置为在Visual Studio中发布,我将其切换到Debug并且现在可以正常工作,我正在接受我的断言。简单的修复。我不确定为什么会有这样的行为,如果有人有任何补充请告诉我。