在单个应用程序的单个 .net core 2.2 中并行调试集成测试和 web api?
Debug Integration test and web api parallely in single .net core 2.2 in single application?
我在 2017 年 visual studio 的 .net core 2.2 中创建了 web Api。在同一个项目中,我还添加了新的单元测试项目来测试创建的 web api。现在当我调试单元测试时,它不工作,我无法在 web api 的调试模式下调试单元测试。请帮助我找出上述问题的解决方案。
已创建 Api 从具有搜索功能的数据库中获取用户列表。在同一解决方案中创建 XUnit 测试项目以测试创建的 Api。当我尝试 运行 XUnit 测试项目时,它显示内部服务器错误并且当我 运行 网络 Api 时测试没有调试。
下面是示例代码。单个解决方案中有 2 个项目文件。一个用于 Api,另一个用于测试。
[HttpPost]
public ActionResult SearchCustomer(CustomerSearch objsearch)
{
var Search=_ourCustomerRespository.SearchCustomer(objsearch);
if (Search.Count() == 0)
return StatusCode(204,new {message = "No Record Found!"});
return Ok(Search);
}
[Fact]
public async Task SearchCustomers()
{
var response = await _TestFixture.Client.PostAsync("api/Customer/SearchCustomer", new StringContent(
JsonConvert.SerializeObject(new CustomerSearch
{
custid = 2,
custfname = "",
custlname = "",
custemail = "",
custorderby = "customerid",
custsortdirection = "asc",
custpagesize = 10,
custpagenumber = 0
}), Encoding.UTF8, "application/json"));
response.StatusCode.Should().Be(HttpStatusCode.OK);
}
好吧,简而言之,您的问题是您没有进行单元测试。 API 是一个外部依赖,而单元测试,根据定义,没有外部依赖。像这样的依赖项需要被模拟,正是因为您现在遇到的问题:您的测试可能会失败,因为依赖项存在问题,而不是被测试的实际代码。
如果你想测试代码和实时之间的完整交互 API,这被认为是集成测试,在这种情况下,你有办法确保满足外部依赖性在测试本身之外。例如,您可能会遇到专门部署的 "test" 环境 API.
我在 2017 年 visual studio 的 .net core 2.2 中创建了 web Api。在同一个项目中,我还添加了新的单元测试项目来测试创建的 web api。现在当我调试单元测试时,它不工作,我无法在 web api 的调试模式下调试单元测试。请帮助我找出上述问题的解决方案。
已创建 Api 从具有搜索功能的数据库中获取用户列表。在同一解决方案中创建 XUnit 测试项目以测试创建的 Api。当我尝试 运行 XUnit 测试项目时,它显示内部服务器错误并且当我 运行 网络 Api 时测试没有调试。 下面是示例代码。单个解决方案中有 2 个项目文件。一个用于 Api,另一个用于测试。
[HttpPost]
public ActionResult SearchCustomer(CustomerSearch objsearch)
{
var Search=_ourCustomerRespository.SearchCustomer(objsearch);
if (Search.Count() == 0)
return StatusCode(204,new {message = "No Record Found!"});
return Ok(Search);
}
[Fact]
public async Task SearchCustomers()
{
var response = await _TestFixture.Client.PostAsync("api/Customer/SearchCustomer", new StringContent(
JsonConvert.SerializeObject(new CustomerSearch
{
custid = 2,
custfname = "",
custlname = "",
custemail = "",
custorderby = "customerid",
custsortdirection = "asc",
custpagesize = 10,
custpagenumber = 0
}), Encoding.UTF8, "application/json"));
response.StatusCode.Should().Be(HttpStatusCode.OK);
}
好吧,简而言之,您的问题是您没有进行单元测试。 API 是一个外部依赖,而单元测试,根据定义,没有外部依赖。像这样的依赖项需要被模拟,正是因为您现在遇到的问题:您的测试可能会失败,因为依赖项存在问题,而不是被测试的实际代码。
如果你想测试代码和实时之间的完整交互 API,这被认为是集成测试,在这种情况下,你有办法确保满足外部依赖性在测试本身之外。例如,您可能会遇到专门部署的 "test" 环境 API.