【问题标题】:Testing express application with mongodb使用 mongodb 测试 express 应用程序
【发布时间】:2020-03-31 21:24:51
【问题描述】:

我有一个关于节点,特别是快速应用程序的不同测试的问题。 我是来自 PHP 背景的 node/express 新手,所以有几个问题。

我知道单元测试,使用 PHPUnit 之类的东西,所以我读过 Jest。我在 express 等应用程序中关于玩笑和单元测试的具体问题。我应该更多地分解我的代码吗?目前,我的路线基本上是我所有业务逻辑所在的地方。这意味着很难进行单元测试?

然后,像端到端测试这样的其他东西,我正在寻找 testcafe。为此,在将代码推送到生产环境之前,我真的不确定如何通过身份验证以及如何在本地机器上进行测试。

完全披露,我的主分支有一个 CI 设置,所以我希望实施这些测试,以阻止我将破坏代码合并到我的主分支并破坏生产站点。

【问题讨论】:

    标签: node.js unit-testing express jestjs end-to-end


    【解决方案1】:

    我个人更喜欢 mocha.js 来测试任何节点应用程序。它指定有多少测试用例通过,为未通过的测试用例生成报告。它还指定了执行代码段所需的时间。

    【讨论】:

    【解决方案2】:

    我对节点也比较陌生。我使用与您相同的堆栈(Express + MongoDB),应用 MVC 模式。在 Java 中,我曾经用 Spock 编写过很多单元测试,但现在我主要关注集成测试。

    在我看来,路线不应该包含任何逻辑。尝试将其移动到单独的层 - 服务。这样您就可以专注于测试它们提供的逻辑,而不是尝试测试隐藏在您的路由中的代码。

    我使用 mocha.js、chai 和 chai-http 进行测试。

    我的方法是建立测试数据库并将我的测试形成为一系列请求。以这种方式测试身份验证没有问题 - 只需要使用一些用户数据正确设置 db。如果你想切断数据库等依赖,使用 sinon 进行 stubbing 和 mocking。

    这种方法的明显缺点是测试时间,但您可以将测试拆分为单元和集成套件。在本地运行单元测试并在 CI 管道中运行集成测试。

    我不确定这是否是最好的方法,但我对效果持肯定态度。学习新技术意味着重构很多。我已经多次更改项目的结构,移动逻辑,提取方法和类等。集成测试向我保证,我没有破坏业务逻辑,尽管已经更改了黑匣子中的内容。使用单元测试来维护这种重大更改将更加困难。

    【讨论】:

      猜你喜欢
      • 2012-08-06
      • 2012-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 2019-11-29
      • 2016-11-02
      • 1970-01-01
      相关资源
      最近更新 更多