Jest: НСкоторыС ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹Π΅ тСсты Π½Π΅ ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈ использовании Ρ„Π»Π°Π³Π° --coverage

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 8 Π΄Π΅ΠΊ. 2016  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: facebook/jest

Π’Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС ?

Ошибка

Каково Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅?

ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ npm test всС тСсты ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Ρ‹; ΠΎΠ΄Π½Π°ΠΊΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ npm test -- --coverage ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ сбою Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСстов.

Если Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ являСтся ошибкой, поТалуйста, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ шаги для воспроизвСдСния ΠΈ, Ссли Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Π½Π° GitHub, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ npm install ΠΈ npm test .

Π£ мСня Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, содСрТащий ряд ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ я Ρ‚Π΅ΡΡ‚ΠΈΡ€ΡƒΡŽ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡˆΡƒΡ‚ΠΊΠΈ ΠΈ энзима. НСдавно я пСрСмСстил нас с [email protected] Π½Π° [email protected] ΠΈ с [email protected] Π½Π° [email protected] . Π― очистил ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ node_modules ΠΏΠ΅Ρ€Π΅Π΄ установкой Π½ΠΎΠ²Ρ‹Ρ… вСрсий.

Π― Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ npm test ΠΈ всС тСсты проходят. Когда я Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽ npm test -- --coverage , Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ тСсты Π½Π΅ проходят, ΠΈ создаСтся ΠΎΡ‚Ρ‡Π΅Ρ‚ ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ.

ΠŸΠΎΡ…ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ всС сбои связаны с Π½Π΅Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΌ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„Π΅Ρ€ΠΌΠ΅Π½Ρ‚Π°, Π° Π·Π°Ρ‚Π΅ΠΌ с использованиСм find(selector) для поиска ΡƒΠ·Π»ΠΎΠ² Π² Π΄Π΅Ρ€Π΅Π²Π΅ Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°. Π£Π·Π»Ρ‹ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ jest , Π½ΠΎ Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ jest --coverage .

ΠŸΠ΅Ρ€Π΅Π΄ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ всС тСсты ΠΏΡ€ΠΎΡˆΠ»ΠΈ для jest ΠΈ jest --coverage .

Π Π΅ΠΏΠΎ: https://github.com/nsand/jest-coverage

КакоС оТидаСмоС повСдСниС?

Π― ΠΎΠΆΠΈΠ΄Π°Π», Ρ‡Ρ‚ΠΎ всС тСсты ΠΏΡ€ΠΎΠΉΠ΄ΡƒΡ‚ для ΠΎΠ±ΠΎΠΈΡ… исполнСний.

Π‘Π½ΠΎΠ²Π° запуститС Jest с --debug ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½ распСчатаСт.

node @ v6.9.1
npm @3.10.8
OS macOS Sierra

jest version = 17.0.3
test framework = jasmine2
config = {
  "coverageDirectory": "/Users/dev/workspaces/component-project/.gh-pages/coverage",
  "moduleNameMapper": [
    [
      "^.+\\.(scss)$",
      "/Users/dev/workspaces/component-project/lib/styleMock.js"
    ]
  ],
  "rootDir": "/Users/dev/workspaces/component-project",
  "name": "-Users-dev-workspaces-component-project",
  "setupFiles": [
    "/Users/dev/workspaces/component-project/node_modules/babel-polyfill/lib/index.js"
  ],
  "testRunner": "/Users/dev/workspaces/component-project/node_modules/jest-jasmine2/build/index.js",
  "transform": [
    [
      "^.+\\.jsx?$",
      "/Users/dev/workspaces/component-project/node_modules/babel-jest/build/index.js"
    ]
  ],
  "usesBabelJest": true,
  "automock": false,
  "bail": false,
  "browser": false,
  "cacheDirectory": "/var/folders/46/446113_55dgdfk3jsptqtd2c0000gn/T/jest",
  "coveragePathIgnorePatterns": [
    "/node_modules/"
  ],
  "coverageReporters": [
    "json",
    "text",
    "lcov",
    "clover"
  ],
  "expand": false,
  "globals": {},
  "haste": {
    "providesModuleNodeModules": []
  },
  "mocksPattern": "__mocks__",
  "moduleDirectories": [
    "node_modules"
  ],
  "moduleFileExtensions": [
    "js",
    "json",
    "jsx",
    "node"
  ],
  "modulePathIgnorePatterns": [],
  "noStackTrace": false,
  "notify": false,
  "preset": null,
  "resetMocks": false,
  "resetModules": false,
  "snapshotSerializers": [],
  "testEnvironment": "jest-environment-jsdom",
  "testPathDirs": [
    "/Users/dev/workspaces/component-project"
  ],
  "testPathIgnorePatterns": [
    "/node_modules/"
  ],
  "testRegex": "(/__tests__/.*|\\.(test|spec))\\.jsx?$",
  "testURL": "about:blank",
  "timers": "real",
  "transformIgnorePatterns": [
    "/node_modules/"
  ],
  "useStderr": false,
  "verbose": null,
  "watch": false,
  "collectCoverage": true,
  "cache": false,
  "watchman": true
}

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ displayName ΠΊ вашим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это πŸ˜„

Istanbul ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ функциями, ΠΈ ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ node Π΄Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ :( - @cpojer https://github.com/facebook/jest/issues/1824#issuecomment -250376673

@nsand : НапримСр, ваш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Icon Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

import React from 'react';

const Icon = ({ name }) => (
  <i className={`fa-icon fa-icon--${name}`}></i>
);

Icon.displayName = 'Icon';

export default Icon;

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@dmitriiabramov Π΅ΡΡ‚ΡŒ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ это происходит?

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ displayName ΠΊ вашим ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ это πŸ˜„

Istanbul ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹ΠΌΠΈ функциями, ΠΈ ΠΌΡ‹ Π±Π΅Ρ€Π΅ΠΌ имя Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ node Π΄Π°Π΅Ρ‚ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρƒ :( - @cpojer https://github.com/facebook/jest/issues/1824#issuecomment -250376673

@nsand : НапримСр, ваш ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Icon Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊ:

import React from 'react';

const Icon = ({ name }) => (
  <i className={`fa-icon fa-icon--${name}`}></i>
);

Icon.displayName = 'Icon';

export default Icon;

@rogeliog ΠŸΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰Π΅! Бпасибо. Π― Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°Π·Π°Π΄ занимался ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Ссли Π±Ρ‹ я Π²Ρ‹Π·Π²Π°Π» children() Π½Π° ΠΎΠ±Π΅Ρ€Ρ‚ΠΊΠ΅, Ρ‚ΠΎ Π±Ρ‹Π»Π° Π±Ρ‹ видимая Ρ€Π°Π·Π½ΠΈΡ†Π°.

тСст npm

 [ { '$$typeof': Symbol(react.element),
           type: [Function: Icon],
           key: null,
           ref: null,
           props: [Object],
           _owner: null,
           _store: {} } ]

ΠΏΡ€ΠΎΡ‚ΠΈΠ²
npm test - - ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅

[ { '$$typeof': Symbol(react.element),
           type: [Function],
           key: null,
           ref: null,
           props: [Object],
           _owner: null,
           _store: {} } ]

Π Π°Π·Π½ΠΈΡ†Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ функция Π½Π°Π·Π²Π°Π½Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ npm test . ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, это ΠΈΠ΄Π΅Ρ‚ Ρ€ΡƒΠΊΠ° ΠΎΠ± Ρ€ΡƒΠΊΡƒ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»ΠΈ, ΠΈ вашС ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ. Бпасибо, @thymikee ΠΈ @rogeliog!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ