我正在尝试在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脚本还可以对文件位置进行排序以及进行一些日志记录等工作,但是我不认为这与通过测试返回消息有关。
答案 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
之后添加一条日志,以便您的日志可以确认该事情已经运行。