在单个应用程序中的单个.net core 2.2中进行调试集成测试和Web API并行处理?

时间:2019-06-17 10:09:59

标签: asp.net-core-webapi asp.net-core-2.1 xunit.net

我已经在Visual Studio 2017中的.net core 2.2中创建了Web Api。在同一项目中,我还添加了新的单元测试项目,以测试创建的Web api。现在,当我调试单元测试时,它无法正常工作,并且无法以Web api的调试模式调试单元测试。请帮助我找出上述问题的解决方案。

创建了Api以从具有搜索功能的数据库中获取用户列表。在相同的解决方案中创建XUnit测试项目,以测试创建的Api。当我尝试运行XUnit测试项目时,它显示内部服务器错误,并且在运行Web Api时测试未调试。 下面是示例代码。单个解决方案中有2个Project文件。一个用于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);
        }

1 个答案:

答案 0 :(得分:2)

嗯,简而言之,您的问题是您没有进行单元测试。该API是外部依赖项,根据定义,单元测试没有外部依赖项。正是由于您现在遇到的问题,才需要嘲笑这种依赖关系:测试可能会失败,因为依赖关系存在问题,而不是要测试的实际代码。

如果要测试代码与实时API之间的完整交互,这被认为是集成测试,并且在这种情况下,您将具有确保在测试本身之外满足外部依赖关系的方法。例如,您可能会使用专门部署的“测试”环境API。