从Powershell在Appveyor上运行Jest测试

时间:2018-07-05 15:55:26

标签: reactjs powershell jestjs appveyor react-create-app

我正在尝试在Appveyor上运行Jest测试。我正在将asp.net核心模板用于React应用程序(使用create-react-app)。当我在本地运行测试(使用npm run test)时,测试运行正常,我看到PASS src\App.test.js以及已通过的测试的概要。

但是,在Appveyor中,控制台抛出错误,导致构建失败。错误消息为PASS src\App.test.js。因此,尽管它似乎实际上已经过去了,但它似乎以某种方式从运行中发出了一个错误。我检查过,$LASTEXITCODE-1

App.Test.js

it('Runs tests', () => { expect(true).toBeTruthy(); });

Appveyor.yml

test_script: - ps: .\build\appveyor\js-tests.ps1

。\ build \ appveyor \ js-tests.ps1

($env:CI = $true) -and (npm run test)

我正在设置CI环境,因为这会阻止测试使用“监视”。 js-tests脚本还可以对文件位置进行排序以及进行一些日志记录等工作,但是我不认为这与通过测试返回消息有关。

2 个答案:

答案 0 :(得分:2)

Npm有时会将正常输出写入stdErr,AppVeyor上的自定义PowerShell主机将其视为错误。解决方案是在CMD中运行这些测试。因此,将它们包装为.cmd文件,并以- cmd:前缀运行。

答案 1 :(得分:1)

@ilyaf答案的另一种选择是使用jest-silent-reporter,它在测试通过时不提供输出。这样做的原因与ilyaf的答案相同,因为npm将输出写入stderr,而不编写任何内容即可解决。

要安装: npm install jest-silent-reporter --save-dev

在package.json中

"scripts": {
"test": "react-scripts test --env=jsdom --reporters jest-silent-reporter", },

请注意,我在这里定义了记者。

我还建议您在致电npm test之后添加一条日志,以便您的日志可以确认该事情已经运行。