从shell脚本运行jest测试 - 有失败导致脚本退出

时间:2015-06-29 18:06:46

标签: bash shell jenkins npm jestjs

我有一个普通的package.json,用npm test命令运行jest个测试。 package.json的相关部分如下所示:

{
  "scripts": {
     "test": "jest",
   "jest": {
    "scriptPreprocessor": "../shared/preprocessor.js"
  }
}

shell脚本如下所示:

script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
parent_dir="$script_dir/.."

echo
echo "Running all tests..."
find "$parent_dir" -name package.json -maxdepth 2 -execdir npm test \;

现在当jest测试失败时,bash脚本不会以失败状态退出。我希望它能够与Jenkins一起创建CI循环。开玩笑测试失败的一个例子如下:

 FAIL  js/components/__tests__/ExperienceCampaign-tests.js (13.19s)
● ExperienceCampaign › listening to ExperienceCampaignStore › it starts listening when the component is mounted
  - Expected: true toBe: false
        at Spec.<anonymous> (/Users/jonathan/experience-studio/campaign/js/components/__tests__/ExperienceCampaign-tests.js:54:26)
        at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)
1 test failed, 0 tests passed (1 total)
Run time: 13.748s
npm ERR! Test failed.  See above for more details.
npm ERR! not ok code 0 

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

jest有一个--forceExit标志,可用于...强制退出:D。 只需将其添加到您的脚本中。

您可能在测试中做了一些不同步的事情,并没有及时返回回调。可能想仔细研究一下。

{
  "scripts": {
     "test": "jest --forceExit",
   "jest": {
    "scriptPreprocessor": "../shared/preprocessor.js"
  }
}

答案 1 :(得分:0)

&#34; npm测试&#34;命令是针对&#34; find&#34;的所有结果执行的。命令。 &#34;发现&#34;如果测试成功完成,我真的不在乎。 根据我的理解,一旦&#34; npm测试&#34;命令失败,一切都应该停止。 以下是您可以使用的一些代码,而不是&#34; find&#34;:

No provider for AngularFire