我正在try 对我的Web API项目中的API的CRUD操作进行单元测试.我费了好大劲才弄明白如何删除.下面是我的服务;
public async Task DeleteCompany(int id)
{
var query = "DELETE FROM Companies WHERE Id = @Id";
using(var connection = _context.CreateConnection())
{
await connection.ExecuteAsync(query, new {id});
}
}
这是控制器
[HttpDelete("{id}")]
public async Task<IActionResult> DeleteCompany(int id)
{
var company = await _companyRepository.GetCompanyById(id);
if (company == null)
{
return NotFound();
}
await _companyRepository.DeleteCompany(id);
return NoContent();
}
下面是单元测试的代码
[Theory]
[InlineData(1)]
public async Task CompanyController_DeleteCompany_ShouldReturnStatusCode204(int id)
{
var mockCompany = new Mock<ICompanyRepository>();
mockCompany.Setup(service => service.DeleteCompany(id))
.Returns(Task.CompletedTask)
.Verifiable();
var sut = new CompanyController(mockCompany.Object);
var result = (OkObjectResult) await sut.DeleteCompany(id);
result.StatusCode.Should().Be(204);
}
结果是,在调试之后,它返回了我的模型(在本例中为Company)的空值.这就是为什么测试没有通过,并且控制器中出现了NotFound
个错误.