1

我正在尝试在 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(); });

应用程序.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 脚本通过排序文件位置和一些日志记录等做了一些其他的事情,但我认为这与将消息作为通过测试返回无关。

4

2 回答 2

2

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

于 2018-07-05T19:32:49.567 回答
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以便您的日志可以确认事情已经运行。

于 2018-07-06T08:14:57.370 回答