Neo*_*Neo 5 c# nunit unit-testing testcase
我想为下面的代码编写单元测试用例
HomeController.cs
[HttpPost]
[ActionName("CreateDemo")]
public async Task<IHttpActionResult> CreateDemo([FromBody] MyRequest request)
{
if (request == null)
{
return BadRequest("request can not be null");
}
if (request.MyID == Guid.Empty)
{
return BadRequest("MyID must be provided");
}
}
Run Code Online (Sandbox Code Playgroud)
我试过跟随哪个不正确的方式我猜是这样的
[TestMethod]
public async Task NullCheck()
{
try
{
var controller = new HomeController();
var resposne = await controller.CreateDemo(null);
Assert.AreEqual(); // not sure what to put here
}
catch (HttpResponseException ex) //catch is not hit
{
Assert.IsTrue(
ex.Message.Contains("request can not be null"));
}
}
Run Code Online (Sandbox Code Playgroud)
每个单元测试应测试一个要求或关注点.您的方法实现了两个要求:
1)如果请求是null,则返回BadRequestErrorMessageResult具有预定义错误消息的对象.2)如果请求的MyID属性为空GUID,则返回BadRequestErrorMessageResult带有另一个预定义错误消息的对象.
这意味着我们应该进行两次单元测试:
[Test]
public async Task CreateDemo_returns_BadRequestErrorMessageResult_when_request_is_null()
{
// Arrange
var controller = new HomeController();
// Act
var response = await controller.CreateDemo(null);
// Assert
Assert.IsInstanceOf<BadRequestErrorMessageResult>(response);
Assert.AreEqual("request can not be null", response.Message);
}
[Test]
public async Task CreateDemo_returns_BadRequestErrorMessageResult_when_request_ID_is_empty_GUID()
{
// Arrange
var controller = new HomeController();
var request = new MyRequest(Guid.Empty);
// Act
var response = await controller.CreateDemo(request);
// Assert
Assert.IsInstanceOf<BadRequestErrorMessageResult>(response);
Assert.AreEqual("MyID must be provided", response.Message);
}
Run Code Online (Sandbox Code Playgroud)
您可以更进一步,将每个测试分成两个,其中一个测试返回对象是预期类型,另一个验证返回的对象状态是否符合预期(例如Message字符串是预期的).这样每次测试就会有一个断言.
附注:
您使用标记标记了此问题,nunit因此我提供了使用该框架的代码.在您的示例中,您使用[TestMethod]来自Microsoft单元测试框架的属性.如果你想使用框架,你不得不做出一些改变,例如替换Assert.IsInstanceOf用Assert.IsInstanceOfType.
我假设通过它的构造函数GUID传递MyRequest给它MyID.
我不是来自网络世界,但我发现该BadRequest方法有一个重载,BadRequestErrorMessageResult如果string作为参数传递则返回.
| 归档时间: |
|
| 查看次数: |
6182 次 |
| 最近记录: |