使用 Mockoon 和 Nunit 模拟 API 调用进行单元测试

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

我是 Nunit 的新手,并且有一些为 .NET 6 Web API 应用程序执行 API 调用的测试。我想通过删除这些外部依赖项将它们转换为真正的单元测试。我在研究嘲笑并发现了Mockoon

我将如何模拟 API 调用?我可以用 Mockoon 来做吗?

我不确定如何以编程方式更改 API 调用以指向仅用于测试的模拟 API。

最终目标是在 GitHub Actions 中自动化测试,但由于测试具有外部依赖项,因此需要首先模拟它们。 Mockoon 提供了一个 CLI 来部署在 GitHub Actions 中。

我的项目是在 VS Code 中创建的,因此我不确定 Visual Studio 实用程序是否有助于配置。

如果您需要更多信息,请告诉我。谢谢!

unit-testing .net-core asp.net-web-api mocking nunit
2个回答
2
投票

我认为这是一个有点广泛的问题。但这里有一些想法。 在我看来,纯单元测试应该以编程方式模拟 API,而不是依赖于 Mockoon 等外部应用程序。

您想要做的似乎更像是集成测试,您的代码正在调用外部 API,只不过您不是维护专门用于测试/QA 目的的原始 API 实例,而是维护一个模拟(使用 Mockoon)。

那么,总体思路大致如下:

  • 您可以通过 UI 在本地使用 Mockoon 准备模拟 API。
  • 您将 Mockoon 的数据文件保存在存储库中。
  • 在 GitHub Actions 工作流程中,您安装 Mockoon CLI 并针对数据文件启动它(相关教程)。
  • 您运行应用程序测试并修改包含 API URL 的环境变量以指向 CLI 正在运行的情况(可能类似于
    http://localhost:3000
    )。

0
投票

Guilaume 的回答很好。 对于第一步,我有几点需要指出:

  • 不要忘记,您必须按特定“路线”的“PLAY”才能开始侦听传入的请求:
  • 您必须配置请求,尤其是响应Headers,否则您可能会遇到麻烦
  • 我选择使用 TestContainers,而不是运行 Github Actions
  • 在撰写本文时,还没有特定的 Mockoon TestContainer 模块
  • 我成功配置了一个 GenericTestContainer 来运行 Mockoon;这有点笨拙,因为我在 Springboot/Kotlin 项目中,但它同样适用于 Java 项目,但我成功了
  • 我认为 Mockoon 应该有一个区域,可以在 Mockoon 网站上共享上述的前沿解决方案(只是一个想法)
© www.soinside.com 2019 - 2024. All rights reserved.