首页 > 解决方案 > .net core 2.1 测试 API 控制器缺少 AspNetCore.Mvc 参考

问题描述

我正在尝试使用此 MS doc中的 .net core 2.1 测试 API 控制器。

我的代码看起来像

    [Fact]
    public async Task ShouldReturnOkWithHealthBackend()
    {
        var apiConsumerService = new Mock<IApiConsumerService>();
        apiConsumerService.Setup(m => m.Consume()).Returns(Task.FromResult(true));

        var controller = new HealthController(apiConsumerService.Object);

        await controller.GetHealth();
    }

在执行等待控制器方法调用时,我遇到了“程序集未引用错误”

我可以添加

using Microsoft.AspNetCore.Mvc;

但是 VS 说 AspNetCore 不存在于 Microsoft 命名空间中。

Intellisense 建议我添加一些参考资料,但这也不起作用。

Intellisense 建议添加 AspNetMVC.Core

但是点击它什么也没做。我还尝试使用 csproj 文件来查看是否可以强制加载这些程序集,但仍然没有成功。

我已经使用 XUnit 模板以及具有相同结果的自定义 NUnit 项目进行了测试。

我来自 API 和测试项目的 csproj 是

差异 csproj

我需要创建什么样的项目来测试 MS 文档中的控制器?

标签: c#xunitasp.net-core-2.1

解决方案


我注意到您没有将包含控制器的项目绑定到版本,而是应该使用以下元素进行绑定。

<PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.1" />

你错过了版本!

细节决定成败。如果您在更新此元素后收到不同的编译错误,那么您已经解决了这个问题。


推荐阅读