WebApi 控制器单元测试不适用于 HttpResponseMessage
WebApi Controller Unit Test not working for 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,我使用 xUnit 进行测试。知道为什么我的测试会退出那条线作为成功的测试,我真的很感激一些帮助。到目前为止,我从我的搜索中没有找到太多关于它的信息。
*****免责声明
以防万一有人想知道,这个测试控制器没有什么奇怪的。代码本身只是对电影 The Big Lebowski 的致敬。他现在是,将来也是 'The Dude'。但是阅读我的代码,现在我在这里看到它确实看起来有点滑稽。
所以这很奇怪,但我在 Visual Studio 中将我的项目设置为 Release,我将其切换为 Debug,它现在可以工作了,我开始断言了。简单的修复。我不确定有关原因的行为,如果有人有任何补充请告诉我。
实际上我已经有一段时间没有编写任何单元测试了,也许我只是不着急。我正在尝试从我的 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,我使用 xUnit 进行测试。知道为什么我的测试会退出那条线作为成功的测试,我真的很感激一些帮助。到目前为止,我从我的搜索中没有找到太多关于它的信息。
*****免责声明
以防万一有人想知道,这个测试控制器没有什么奇怪的。代码本身只是对电影 The Big Lebowski 的致敬。他现在是,将来也是 'The Dude'。但是阅读我的代码,现在我在这里看到它确实看起来有点滑稽。
所以这很奇怪,但我在 Visual Studio 中将我的项目设置为 Release,我将其切换为 Debug,它现在可以工作了,我开始断言了。简单的修复。我不确定有关原因的行为,如果有人有任何补充请告诉我。