【问题标题】:If scripts fails, NPM should continue executing further ones如果脚本失败,NPM 应该继续执行更多的
【发布时间】:2015-01-27 02:56:03
【问题描述】:

我的 package.json 文件中有以下脚本,我通过 npm run protractor 在我的 cmd 中执行:

"scripts": {
    "postinstall": "bower install",
    "pretest": "npm install",
    "test": "karma start test/karma.conf.js",
    "test-single-run": "karma start test/karma.conf.js  --single-run",
    "preupdate-webdriver": "npm install",
    "update-webdriver": "webdriver-manager update",
    "preprotractor": "npm run update-webdriver && node setUp.js",
    "protractor": "protractor test/protractor-conf.js",
    "postprotractor": "node tearDown.js",
  }

如果我的所有 e2e 测试都通过了,npm 会运行整个脚本 - 也是我的 tearDown.js。但是,如果我的量角器测试失败(“protractor”:“protractor test/protractor-conf.js”),npm 不会继续执行我的 postprotractor 文件(我需要 tearDown.js 因为它关闭了我的后端) . 有没有让 npm 运行 整个 脚本的解决方案?

【问题讨论】:

    标签: angularjs node.js npm protractor


    【解决方案1】:

    您应该在beforeLaunchafterLaunch 中将设置脚本和拆卸脚本作为量角器的一部分运行,而不是npm。

    如果由于某种原因您绝对不想将它作为量角器的一部分运行,则必须在 afterLaunch (example) 中或通过在量角器运行脚本周围包装脚本来将量角器 exitCode 更改为“0” .但是,我强烈建议不要这样做,因为那样你只是在掩盖错误。

    【讨论】:

    • 很好的解决方案!唯一的问题是我的后端打开了,发出了一个 http 请求并且量角器已经打开了 - 但是我的 http 请求还没有完成。你知道我该如何解决这个时间问题吗?
    • 你可以在 beforeLaunch 中返回一个 promise,protractor 会等待它。
    • 我用promise解决了这个问题,谢谢你的提示!但是,我还有一个问题:似乎 afterLaunch 忽略了异步代码 - 有没有办法绕过它?因为我想要完全自动化的测试用例,所以我将 taskkill 放在我的 afterLaunch 中以杀死我的后端。我不能把代码放在一个单独的文件中,让 npm 在 postprotractor 中运行它(如果错误 - 后端没有关闭)......有什么想法吗?
    • 忽略异步代码是什么意思? AfterLaunch 的工作方式与 beforeLaunch 相同。
    • github.com/angular/protractor/issues/1413 - 然而 npm 模块 ms-task 是异步的,而 afterLaunch 只是忽略它...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多