unit-testing - 构建 ASP.NET Core Web API 单元测试时出错
问题描述
我正在尝试为我构建的 Web API 创建一个单元测试。我使用 Moq 和 xUnit.net 进行测试。我收到以下错误
CS1929“ISetup<dsf_localContext, ValueTask>”不包含“ReturnsAsync”的定义,并且最佳扩展方法重载“SequenceExtensions.ReturnsAsync(ISetupSequentialResult<Task>, ExtractGroupDto)”需要“ISetupSequentialResult<Task>”类型的接收器
谁能帮我纠正错误,或提供替代代码来解决此问题?
以下是 API 代码:
public class ExtractGroupController : ControllerBase
{
private readonly dsf_localContext _context;
private readonly IMapper _mapper;
public ExtractGroupController(dsf_localContext context, IMapper mapper)
{
_context = context;
_mapper = mapper;
}
// GET: api/ExtractGroup/5
[HttpGet("{id}")]
public async Task<ActionResult<ExtractGroupDto>> GetExtractGroup(int id)
{
var extractGroup = await _context.ExtractGroups.FindAsync(id);
if (extractGroup == null)
{
return NotFound();
}
return _mapper.Map<ExtractGroupDto>(extractGroup);
}}
这是单元测试代码(我按照我自己项目的教程中的步骤进行操作)
public class ExtractGroupControllerTests
{
private readonly ExtractGroupController _sut;
private readonly Mock<dsf_localContext> _repoMock = new Mock<dsf_localContext>();
private readonly Mock<IMapper> _mapperMock = new Mock<IMapper>();
public ExtractGroupControllerTests()
{
_sut = new ExtractGroupController(_repoMock.Object, _mapperMock.Object);
}
[Fact]
public async Task GetExtractGroup()
{
//Arrange
int dataId = 1;
var extractGroupDto = new ExtractGroupDto
{
CreatedBy = "XYZ",
CreatedOn = DateTime.Now,
ModifiedBy = "XYZ",
ModifiedOn = DateTime.Now,
ExtractGroupId = 1,
ExtractGroupName = "test",
ExtractGroupDescription = "test desc",
ActiveFlag = "1"
};
_repoMock.Setup(x => x.ExtractGroups.FindAsync(dataId)).ReturnsAsync(extractGroupDto);
//Act
var result = await _sut.GetExtractGroup(dataId);
//Assert
Assert.Equal(dataId, result.Value.ExtractGroupId);
}
}
解决方案
推荐阅读
- javascript - 在 html 中的学生成绩表中将包含“-”的单元格的颜色更改为黄色
- java - 从 charAt 保存为 int
- karate - 空手道 UI 跨浏览器示例
- php - Amadeus e-Power Web Service - 设置 SOAP 身份验证标头时出现问题
- android - 当我尝试在片段中动态更改 TextView 值时没有任何反应
- ruby-on-rails - 如何从对象数组中选择特定值或在 ruby 或 rails 中返回特定值
- android - 并行运行多个 Firebase TextRecognition 进程
- python - 使用python枚举
- c# - 如何在 CSharpFunctionalExtensions 中正确地将同步和异步方法链接在一起?
- mailgun - MailGun(二进制数据附件)