无法断言在Xunit中返回jsonresult的ActionResult

问题描述 投票:0回答:1

我正在尝试断言一个IActionResult,它返回一个JsonResult。我无法访问IActionResult值。

我该怎么做?

enter image description here

更新

这是代码。

[Fact]
    public async void AppendEmailTemplateUrl_ReturnOk()
    {
        // Arrange
        var mockLogger = new Mock<ILogger<EmailController>>();
        var mockMapper = new Mock<IMapper>();
        var mockEmsWorkUnit = new Mock<IEmsWorkUnit>();
        var mockAzureBlob = new Mock<IAzureBlob>();

        // Setup
        var userRequestTemplateString = File.ReadAllText(@".\EmailController\UserRequestTemplate.txt");
        mockAzureBlob.Setup(blob => blob.GetHtmlBlob(It.IsAny<string>(), It.IsAny<Uri>()))
            .ReturnsAsync(userRequestTemplateString);

        var emailController = new EmailController(mockLogger.Object, mockMapper.Object, mockEmsWorkUnit.Object, mockAzureBlob.Object);
        var jsonString = File.ReadAllText(@".\EmailController\TemplateUrlOk.json");
        var testEmailUrlDto = GeneralHelpers.Deserialize<EmailUrlDto>(jsonString);

        // Act
        var result = await emailController.AppendEmailTemplateUrl(testEmailUrlDto);

        // Assert

    }
c# assert xunit actionresult jsonresult
1个回答
0
投票

JsonResult.Value放回要格式化的已知类型并对此执行断言

// Act
var result = await emailController.AppendEmailTemplateUrl(testEmailUrlDto);

//Assert
var actual = result as JsonResult;
Assert.IsNotNull(actual);
var model = actual.Value as ApiResult;
Assert.IsNotNull(model);

//...assert model

也重构测试以使用async Task而不是async void

[Fact]
public async Task AppendEmailTemplateUrl_ReturnOk() {
    //...omitted for brevity
}
© www.soinside.com 2019 - 2024. All rights reserved.