gpt4 book ai didi

c# - 如何从通过 API 返回的 Task 获取值进行单元测试

转载 作者:行者123 更新时间:2023-12-04 01:31:40 24 4
gpt4 key购买 nike

我使用 ASP.NET MVC Core v2.1 创建了一个 API。我的其中之一 HttpGet方法设置如下:

public async Task<IActionResult> GetConfiguration([FromRoute] int? id)
{
try
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}

..... // Some code here

return Ok(configuration);
}
catch (Exception ex)
{
... // Some code here
}
}

在进行单元测试时,我可以检查 Ok 是响应,但我确实需要查看配置的值。我似乎无法让它与以下一起工作:
[TestMethod] 
public void ConfigurationSearchGetTest()
{
var context = GetContextWithData();
var controller = new ConfigurationSearchController(context);
var items = context.Configurations.Count();
var actionResult = controller.GetConfiguration(12);

Assert.IsTrue(true);
context.Dispose();
}

在运行时,我可以检查 actionResult具有我无法编码的某些值。有什么我做错了吗?还是我只是在想这个错误?我希望能够做到:
Assert.AreEqual(12, actionResult.Values.ConfigurationId);

最佳答案

您可以在不更改返回类型的情况下获得经过测试的 Controller 。IActionResult是所有其他人的基本类型。
将结果转换为预期类型并将返回值与预期进行比较。

由于您正在测试异步方法,因此也要使测试方法异步。

[TestMethod] 
public async Task ConfigurationSearchGetTest()
{
using (var context = GetContextWithData())
{
var controller = new ConfigurationSearchController(context);
var items = context.Configurations.Count();

var actionResult = await controller.GetConfiguration(12);

var okResult = actionResult as OkObjectResult;
var actualConfiguration = okResult.Value as Configuration;

// Now you can compare with expected values
actualConfuguration.Should().BeEquivalentTo(expected);
}
}

关于c# - 如何从通过 API 返回的 Task<IActionResult> 获取值进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50801094/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com