如何使用 xUnit 测试 API 控制器
How to test API Controller with xUnit
我是单元测试和 .net 的新手。我想测试一个 api 控制器,其中 returns 和 IEnumerable。
测试此控制器的最佳方法是什么?你有什么建议吗?
[Route("api/[controller]")]
[ApiController]
public class PersonController
{
[HttpGet]
public IEnumerable<Person> GetListOfPerson([FromQuery] FilterRequest request)
{
return new Person[]
{
new()
{
Name ="Peter"
Age = "23"
},
new()
{
Name ="John"
Age = "54"
}
}
.Where(person=> request.MatchesFilter(person))
.Skip(request.Page * request.ItemsPerPage)
.Take(request.ItemsPerPage);
}
...
}
提前致谢!
为您的 PersonControllerTest
创建一个单独的 class
在 PersonControllerTest 中创建一个 PersonController 实例
调用你的method/function
[Fact]
public void GetListOfPerson_ShouldReturn()
{
var response = personController.GetListOfPerson(YOUR PARAM);
//Time to Assert
Assert.True(response.Count() == 2);
Assert.NotNull(response);
//etc...
}
这也可能有所帮助。
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-5.0
没那么难。创建一个 TestClass
,其中包含一个 Controller
实例。调用控制器的方法进行测试。
我的片段:
public class TestClass {
private readonly PersonController personController;
public TestClass(){
// you can setup any mock, initialization to test class if needed
personController = new PersonController();
}
[Fact]
public void GetListOfPersonTest(){
// create instance of FilterRequest to controller
var result = personController.GetListOfPerson(..filterRequestHere..); // call the method
Assert.IsType<IEnumerable<Person>>(result); // check the type of returned result
}
}
您可以阅读更多 Assert here
我是单元测试和 .net 的新手。我想测试一个 api 控制器,其中 returns 和 IEnumerable。 测试此控制器的最佳方法是什么?你有什么建议吗?
[Route("api/[controller]")]
[ApiController]
public class PersonController
{
[HttpGet]
public IEnumerable<Person> GetListOfPerson([FromQuery] FilterRequest request)
{
return new Person[]
{
new()
{
Name ="Peter"
Age = "23"
},
new()
{
Name ="John"
Age = "54"
}
}
.Where(person=> request.MatchesFilter(person))
.Skip(request.Page * request.ItemsPerPage)
.Take(request.ItemsPerPage);
}
...
}
提前致谢!
为您的 PersonControllerTest
创建一个单独的 class在 PersonControllerTest 中创建一个 PersonController 实例
调用你的method/function
[Fact] public void GetListOfPerson_ShouldReturn() { var response = personController.GetListOfPerson(YOUR PARAM); //Time to Assert Assert.True(response.Count() == 2); Assert.NotNull(response); //etc... }
这也可能有所帮助。 https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-5.0
没那么难。创建一个 TestClass
,其中包含一个 Controller
实例。调用控制器的方法进行测试。
我的片段:
public class TestClass {
private readonly PersonController personController;
public TestClass(){
// you can setup any mock, initialization to test class if needed
personController = new PersonController();
}
[Fact]
public void GetListOfPersonTest(){
// create instance of FilterRequest to controller
var result = personController.GetListOfPerson(..filterRequestHere..); // call the method
Assert.IsType<IEnumerable<Person>>(result); // check the type of returned result
}
}
您可以阅读更多 Assert here