如何从我的项目访问我的MongoDB实例到我的xunit测试项目类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从我的项目访问我的MongoDB实例到我的xunit测试项目类?相关的知识,希望对你有一定的参考价值。

我想提一下,我已经开始学习如何使用microsoft的官方文档在asp net core 2.1中构建apis,而且我是初学者。

我已经完成了一个示例任务,即使用MongoDB作为我的服务器构建一个简单的员工成就表单的api,并且已经使用Swashbuckle完成了文档,并且目前仍然使用xunit进行单元测试我的控制器方法,而我运行我的测试它返回错误:

消息:System.NullReferenceException:未将对象引用设置为对象的实例。

我已经尝试调试我的单元测试,我发现每次我的数据库实例“_empModel”返回null。为什么会这样?

在我的xunit项目中访问此mongoDb实例以执行测试的正确方法是什么?

这是我的代码快照的链接:https://drive.google.com/file/d/1jydiyuO_rSbx-2PXK0ZP8YoF8ho55avx/view?usp=sharing

答案

你获得null的原因是在你的单元测试中你正在调用EmployeeServices的无参数构造函数,并在你传入config的构造函数中创建你的empModel。您可以通过在测试项目中输入配置文件并将其传入来解决这个问题,但正如您在帖子的评论中所提到的,您应该嘲笑控制器中的服务。

如果你想测试整个堆栈(集成测试),那么你需要实例化并适当地传递所有内容,而不是模拟。

另一答案

所以我尝试过这种方法

在xunit项目中创建了名为xunittests.json的新json文件,在其中我声明了我的“ConnectionString”

然后我在我的类构造函数中声明了新的配置变量

public UnitTest1()

    {

        var config = new ConfigurationBuilder().AddJsonFile("xunittest.json", optional: true, reloadOnChange: true).Build();

        _empTestServices = new EmployeeServices(config);

        _empTestController = new EmpController(_empTestServices);

    }

这让我可以访问我的数据库实例,因为现在iam调用非空的EmployeeServices(Iconfiguration配置)构造函数,该构造函数具有_empModel

但是我的单元测试再次出现错误

消息:Assert.IsType()失败

预期:Microsoft.AspNetCore.Mvc.OkObjectResult

实际:( null)

现在我正在调查它祝我好运XD

以上是关于如何从我的项目访问我的MongoDB实例到我的xunit测试项目类?的主要内容,如果未能解决你的问题,请参考以下文章

尝试从我的 JSON 文件访问一组图像到我的 JS 代码

如何从我的随机访问文件中删除记录?

Haskell Persistent Library - 如何从我的数据库中获取数据到我的前端?

如何在 aws 中从我的 mac 设置和登录 ***?

如何连接到 MongoDB EC2 实例

只能从我的 ElasticBeanStalk 实例访问 AWS S3 存储桶