如何使用xUnit对ActionResult <T>进行单元测试?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (95)

我有一个xUnit测试,类似于:

    [Fact]
    public async void GetLocationsCountAsync_WhenCalled_ReturnsLocationsCount()
    {
        _locationsService.Setup(s => s.GetLocationsCountAsync("123"))
            .ReturnsAsync(10);
        var controller = new LocationsController(_locationsService.Object, null)
        {
            ControllerContext = { HttpContext = SetupHttpContext().Object }
        };
        var actionResult = await controller.GetLocationsCountAsync();
        actionResult.Value.Should().Be(10);
        VerifyAll();
    }

结果的值为空,导致我的测试失败,但是如果你查看ActionResult.Result.Value(内部属性),它包含预期解析值。

请参见以下调试器的屏幕截图。

如何在单元测试中获得actionResult.Value?

提问于
用户回答回答于

不是使用控制器ControllerBase.Ok()返回结果,而是只需返回结果本身。隐式运算符实现ActionResult<T>负责类型转换。

扫码关注云+社区

领取腾讯云代金券