如何解决如何使用 xUnit 测试 API 控制器
我是单元测试和 .net 的新手。我想测试一个 api 控制器,它返回和 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 创建一个单独的类
-
在 PersonControllerTest 中创建一个 PersonController 实例
-
调用你的方法/函数
[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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。