2017-04-06 133 views
0

我其实没有在一段时间内写任何单元测试,也许我只是摆脱了事物的摆动。我试图从我的WebApi中的控制器测试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 =新HttpConfiguration();'就是这样。测试结束。测试被标记为通过。

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

*****免责声明

以防万一你想知道,没有什么奇怪的有关此测试的控制器。代码本身只是对电影The Big Lebowski的致敬。他永远是'The Dude'。但是阅读我的代码,现在看到它在这里看起来有点有趣。

回答

0

所以这很奇怪,但我把我的项目设置为在Visual Studio中发布,我将它切换到调试,现在它工作,我得到我的断言。简单的修复。我不知道为什么,如果有人有任何补充,请让我知道的行为。