【问题标题】:How to run test file after launching server using npm scripts?使用 npm 脚本启动服务器后如何运行测试文件?
【发布时间】:2020-01-04 08:05:24
【问题描述】:

我想利用 npm script 的能力,并尝试创建一个命令来运行我的 API 测试。基本上我需要启动 API 并执行一些 HTTP 请求。我有一个 JS 文件中的测试,我们称之为 automatic-test.js,我想启动 API,然后运行这些测试。

在我的package.json 中,我尝试了这个调用:

"scripts": {
    "start": "node ./bin/www",
    "test": "npm start & node test/automatic-test.js"
}

test 命令启动 API 服务器,但它不运行测试文件。我尝试将& 更改为&&||; (here),但没有一个使命令行到达命令的第二部分。我什至尝试将start命令的内容写在test的开头,但问题是一样的。

我可以找到一种解决方法,从测试文件 (here)、require('/route/to/server/file') 启动服务器,留下 test 命令就像 node test/automatic-test.js 一样,但我觉得我可能在作弊。我应该怎么做才能使这个声明如我所愿?

npm start &/&&/||/; node test/automatic-test.js

节点版本:v10.15.0

Npm 版本:6.4.1

编辑:这些测试是未来真实测试的初稿,只是一堆 HTTP 请求,应该只返回一小部分结果,它们不是正确的测试(评估、摩卡等)

【问题讨论】:

    标签: javascript node.js api npm npm-scripts


    【解决方案1】:

    默认节点不提供直接测试的能力,你必须添加像mocha这样的包

    请遵循文档。

    【讨论】:

    • 我刚刚添加了一个编辑,进一步解释了我正在尝试的这些测试。提前致谢。
    • npm install --save-dev start-server-and-test 使用这个模块然后你可以在服务器启动后运行测试
    【解决方案2】:

    concurrently npm 包非常可爱,恕我直言。

    它声称是 “像 npm run watch-js 和 npm run watch-less 但更好” 并且因为您的问题是从 & 绑定命令开始的......

    这是来自package.json 的示例:

        "test:dev": "concurrently --restart-tries 10 --names rollup,sirv \"rollup --config rollup.test.config.js -w\" \"sirv test --port 3000 --single --dev\"",
    

    它将名称(“rollup”、“sirv”)打印到输出中,以便清楚地知道哪个进程做了什么。

    我无法与已经提到的start-server-and-test 进行比较。

    【讨论】:

      猜你喜欢
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 2016-05-02
      • 2018-06-26
      • 1970-01-01
      • 2018-09-24
      • 1970-01-01
      相关资源
      最近更新 更多