Javascript (Jest) 在 Semaphore CI ruby 项目上的测试



我已经用Semaphore CI建立了一个Ruby on Rails项目好几年了。信号量项目设置为使用 Ruby 2.2.2 作为其语言。随着时间的推移,该项目采用了带有browserify和babelify的npm,我们正在使用所有最新的ES6功能。我们将npm install作为设置步骤添加到我们的信号量构建中,这工作正常。

现在我们开始使用Jest来测试我们的javascript,这在本地运行良好。但是,当我将npm test添加到我们的信号量测试命令时,npm test信号量 CI 上失败,并出现以下错误:

FAIL app/assets/javascripts/tests/selectors/conversations.test.js
● Test suite failed to run
SyntaxError: Unexpected token {
at _load_jsdom (node_modules/jest/node_modules/jest-cli/node_modules/jest-environment-jsdom/build/index.js:17:41)
FAIL app/assets/javascripts/tests/reducers/conversations.test.js
● Test suite failed to run
SyntaxError: Unexpected token {
at _load_jsdom (node_modules/jest/node_modules/jest-cli/node_modules/jest-environment-jsdom/build/index.js:17:41)
Test Suites: 2 failed, 2 total
Tests:       0 total
Snapshots:   0 total
Time:        0.65s
Ran all test suites.
npm ERR! Test failed.  See above for more details.

以下是该项目package.json中的一些相关信息:

"scripts": {
"test": "jest --debug --verbose"
},
"jest": {
"roots": [
"<rootDir>/app/assets/javascripts"
]
},
"dependencies": {
"babel-plugin-syntax-async-functions": "^6.3.13",
"babel-plugin-transform-class-properties": "^6.24.1",
"babel-plugin-transform-regenerator": "^6.3.18",
"babel-polyfill": "^6.3.14",
"babel-preset-env": "^1.5.2",
"babel-preset-es2015": "^6.24.1",
"babel-preset-es2016": "^6.24.1",
"babel-preset-es2017": "^6.24.1",
"babel-preset-react": "^6.3.13",
"babel-preset-stage-0": "^6.3.13",
"babelify": "^7.2.0",
"browserify": "^14.0.0",
"browserify-incremental": "^3.1.0",
"es6-promise": "^3.0.2",
"fetch": "^0.3.6"
},
"devDependencies": {
"babel-core": "^6.26.0",
"babel-jest": "^22.1.0",
"babel-plugin-transform-class-properties": "^6.24.1",
"bootstrap": "^4.0.0-beta.3",
"browserify": "^14.4.0",
"browserify-incremental": "^3.1.1",
"jest": "^22.1.1"
}

这是位于项目中的.babelrc文件:

{
"presets": ["env", "es2015", "es2016", "es2017", "stage-0", "react"]
}

在当地,我在node v7.10.0.我SSH进入我的信号量CI会话,发现node v4.8.4安装在那里。我尝试在本地计算机上安装node v4.8.4,安装该版本后,我在本地遇到与在 CI 上相同的测试错误(发布在上面)。所以这是一个节点版本问题。

我补充说:

"engines": {
"node": ">= 7.1.0"
}

到我的package.json文件,但这不会影响信号灯上安装的节点版本。

因此,如果我已经在信号量构建设置中选择Ruby 2.2.2作为我的语言和版本,如何更改我的节点版本?

提前感谢您的帮助。

看起来 SemaphoreCI 没有使用与您相同版本的 NPM。但是您可以在构建设置中进行设置,如下所示:

nvm install v8.9.4
npm install
npm test

您可以在 SSH 中对其进行测试

来自信号灯的欧文,

要在选择 Ruby 2.2 时更改环境中的当前 Node.js 版本,请将nvm use 7.1添加到设置步骤中。这将切换到所需的 Node.js 版本,一切都应该按预期工作。文档中也有一个例子。

如果您遇到任何问题,请与支持人员联系。

最新更新