运行 来自 powershell 的 Appveyor Jest 测试

Running Jest tests on Appveyor from powershell

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

然而,在 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 环境,因为这会阻止测试使用 "watch"。 js-tests 脚本做了一些其他的事情,包括排序文件位置和一些日志记录等,但我认为这不相关,因为消息作为通过的测试返回。

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

@ilyaf 的答案的替代方法是使用 jest-silent-reporter,它在测试通过时不提供输出。这与 ilyaf 的回答的原因相同,因为 npm 将输出写入 stderr,不写任何内容即可解决。

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

在你的 package.json

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

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

我还建议在调用 npm test 后添加一个日志,这样您的日志就可以确认该东西有 运行。