gpt4 book ai didi

c# - 当结果以 IActionResult 类型返回时,如何在 Xunit 中获取内容值

转载 作者:IT王子 更新时间:2023-10-29 04:48:54 26 4
gpt4 key购买 nike

我有一个使用 Xunit 的单元测试项目,我们正在测试的方法返回 IActionResult

我看到有人建议使用“NegotiatedContentResult”来获取 IActionResult 的内容,但这在 Xunit 中不起作用。

所以我想知道如何在 Xunit 中获取 IActionResult 的内容值?

测试代码示例如下:

public void GetTest()
{
var getTest = new ResourcesController(mockDb);

var result = getTest.Get("1");

//Here I want to convert the result to my model called Resource and
//compare the attribute Description like below.
Resource r = ?? //to get the content value of the IActionResult

Assert.Equal("test", r.Description);
}

有谁知道如何在 XUnit 中执行此操作?

最佳答案

取决于您期望返回的内容。在前面的示例中,您使用了这样的操作。

[HttpGet("{id}")]
public IActionResult Get(string id) {
var r = unitOfWork.Resources.Get(id);

unitOfWork.Complete();

Models.Resource result = ConvertResourceFromCoreToApi(r);

if (result == null) {
return NotFound();
} else {
return Ok(result);
}
}

该方法将返回 OkObjectResultNotFoundResult。如果被测方法的期望是返回 Ok() 那么您需要将测试中的结果转换为您期望的结果,然后对其进行断言

public void GetTest_Given_Id_Should_Return_OkObjectResult_With_Resource() {
//Arrange
var expected = "test";
var controller = new ResourcesController(mockDb);

//Act
var actionResult = controller.Get("1");

//Assert
var okObjectResult = actionResult as OkObjectResult;
Assert.NotNull(okObjectResult);

var model = okObjectResult.Value as Models.Resource;
Assert.NotNull(model);

var actual = model.Description;
Assert.Equal(expected, actual);
}

关于c# - 当结果以 IActionResult 类型返回时,如何在 Xunit 中获取内容值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39378873/

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