如何解决CI 正在运行样品纱线测试
我对 Jest 比较陌生,并尝试在我的 GitLab CI 上为 Rails 应用程序运行它。当我在本地运行我的测试时,它们运行得很好。我使用这个命令来运行它们:
yarn run test
AFAIK,这与运行相同:
npm run test
当我在 CI 上运行时,测试通过,但它也在 Gems 等中运行各种示例测试。请参阅下面的日志。
为什么我要运行示例测试以及如何停止它?
$ yarn run test
yarn run v1.22.4
$ jest
FAIL vendor/ruby/2.7.0/gems/capybara-3.14.0/lib/capybara/spec/public/test.js
● Test suite Failed to run
ReferenceError: $ is not defined
1 | var activeRequests = 0;
> 2 | $(function() {
| ^
3 | $('#change').text('I changed it');
4 | $('#drag,#drag_scroll,#drag_link').draggable();
5 | $('#drop,#drop_scroll').droppable({
at Object.<anonymous> (vendor/ruby/2.7.0/gems/capybara-3.14.0/lib/capybara/spec/public/test.js:2:1)
PASS app/javascript/reactjs/article/AudioContent.test.js
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/environments/__tests__/base.js
● Environment › toWebpackConfig › should return multi file entry points
TypeError: Cannot read property 'sort' of undefined
32 | test('should return multi file entry points',() => {
33 | const config = environment.toWebpackConfig()
> 34 | expect(config.entry.multi_entry.sort()).toEqual([
| ^
35 | resolve('app','javascript','packs','multi_entry.css'),36 | resolve('app','multi_entry.js')
37 | ])
at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/environments/__tests__/base.js:34:39)
● Environment › toWebpackConfig › should return default resolve.modules with additions
expect(received).toEqual(expected) // deep equality
- Expected - 3
+ Received + 0
Array [
"/builds/immersive-apps/immersive/app/javascript",- "/builds/immersive-apps/immersive/app/assets",- "/etc/yarn",- "/builds/immersive-apps/immersive/app/elm","node_modules",]
83 | test('should return default resolve.modules with additions',() => {
84 | const config = environment.toWebpackConfig()
> 85 | expect(config.resolve.modules).toEqual([
| ^
86 | resolve('app','javascript'),87 | resolve('app/assets'),88 | resolve('/etc/yarn'),at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/environments/__tests__/base.js:85:38)
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/config_types/__tests__/config_list.js
PASS app/javascript/reactjs/article/ArticleHeader.test.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/utils/__tests__/get_style_rule.js
PASS app/javascript/reactjs/article/AudioPlayer.test.js
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/config.js
● Config › should return additional paths as listed in app config,with resolved paths
expect(received).toEqual(expected) // deep equality
- Expected - 5
+ Received + 1
- Array [
- "app/assets",- "app/elm",- ]
+ Array []
25 |
26 | test('should return additional paths as listed in app config,with resolved paths',() => {
> 27 | expect(config.additional_paths).toEqual(
| ^
28 | [
29 | 'app/assets',30 | '/etc/yarn',at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/config.js:27:37)
● Config › should return extensions as listed in app config
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 1
@@ -1,6 +1,7 @@
Array [
+ ".jsx",".mjs",".js",".sass",".scss",".css",@@ -10,7 +11,6 @@
".png",".svg",".gif",".jpeg",".jpg",- ".elm",]
35 |
36 | test('should return extensions as listed in app config',() => {
> 37 | expect(config.extensions).toEqual([
| ^
38 | '.mjs',39 | '.js',40 | '.sass',at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/config.js:37:31)
● Config › should return static assets extensions as listed in app config
expect(received).toEqual(expected) // deep equality
- Expected - 0
+ Received + 5
@@ -4,6 +4,11 @@
".png",".tiff",".ico",+ ".eot",+ ".otf",+ ".ttf",+ ".woff",+ ".woff2",]
54 |
55 | test('should return static assets extensions as listed in app config',() => {
> 56 | expect(config.static_assets_extensions).toEqual([
| ^
57 | '.jpg',58 | '.jpeg',59 | '.png',at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/config.js:56:45)
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/dev_server.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/development.js
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/env.js
● Env › with a non-standard environment
expect(received).toEqual(expected) // deep equality
- Expected - 1
+ Received + 1
Object {
"nodeenv": "production",- "railsEnv": "staging",+ "railsEnv": "production",}
39 | process.env.RAILS_ENV = 'staging'
40 | process.env.NODE_ENV = 'staging'
> 41 | expect(require('../env')).toEqual({
| ^
42 | railsEnv: 'staging',43 | nodeenv: 'production'
44 | })
at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/env.js:41:31)
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/config_types/__tests__/config_object.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/utils/__tests__/deep_assign.js
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/staging.js
● Custom environment › toWebpackConfig › should use staging config and default production environment
expect(received).toEqual(expected) // deep equality
Expected: "/builds/immersive-apps/immersive/public/packs-staging"
Received: "/builds/immersive-apps/immersive/public/packs"
19 | const config = environment.toWebpackConfig()
20 |
> 21 | expect(config.output.path).toEqual(resolve('public','packs-staging'))
| ^
22 | expect(config.output.publicPath).toEqual('/packs-staging/')
23 | expect(config).toMatchObject({
24 | devtool: 'source-map',at Object.<anonymous> (vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/staging.js:21:34)
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/production.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/__tests__/test.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/utils/__tests__/deep_merge.js
PASS vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/utils/__tests__/objectify.js
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/lib/install/config/webpack/test.js
● Test suite Failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:175:18)
at node_modules/@jest/core/build/TestScheduler.js:304:17
at node_modules/emittery/index.js:260:13
at Array.map (<anonymous>)
at Emittery.Typed.emit (node_modules/emittery/index.js:258:23)
FAIL vendor/ruby/2.7.0/gems/webpacker-5.2.1/package/environments/test.js
● Test suite Failed to run
Your test suite must contain at least one test.
at onResult (node_modules/@jest/core/build/TestScheduler.js:175:18)
at node_modules/@jest/core/build/TestScheduler.js:304:17
at node_modules/emittery/index.js:260:13
at Array.map (<anonymous>)
at Emittery.Typed.emit (node_modules/emittery/index.js:258:23)
Test Suites: 7 Failed,13 passed,20 total
Tests: 7 Failed,61 passed,68 total
解决方法
您应该能够在 package.json 文件的 jest 部分添加如下内容:
"jest": {
...
"testPathIgnorePatterns": [
"<rootDir>/vendor/"
]
,
将此添加到 package.json
"scripts": {
"test": "jest --verbose ./app/javascript"
},
CI 正在运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。