Apakah Anda ingin meminta fitur atau melaporkan bug ?
Serangga
Apa perilaku saat ini?
Mengeksekusi npm test
memiliki semua tes yang lulus; namun, mengeksekusi npm test -- --coverage
menyebabkan beberapa tes gagal.
Jika perilaku saat ini adalah bug, berikan langkah-langkah untuk mereproduksi dan jika mungkin repositori minimal di GitHub yang dapat kami npm install
dan npm test
.
Saya memiliki proyek yang berisi sejumlah komponen reaksi yang saya uji menggunakan lelucon dan enzim. Saya baru-baru ini memindahkan kami dari [email protected]
ke [email protected]
dan [email protected]
ke [email protected]
. Saya membersihkan direktori node_modules
sebelum menginstal versi yang lebih baru.
Saya menjalankan npm test
dan semua tes lulus. Ketika saya menjalankan npm test -- --coverage
, beberapa tes gagal dan laporan cakupan dibuat.
Sepertinya semua kegagalan ada di sekitar komponen yang dirender dangkal dengan enzim dan kemudian menggunakan find(selector)
untuk menemukan node di pohon render. Node berhasil ditemukan selama jest
, tetapi gagal untuk jest --coverage
.
Sebelum peningkatan, semua tes lulus untuk jest
dan jest --coverage
.
Repo: https://github.com/nsand/jest-coverage
Apa perilaku yang diharapkan?
Saya berharap semua tes lulus untuk kedua eksekusi.
Jalankan Jest lagi dengan --debug
dan berikan konfigurasi lengkap yang dicetaknya.
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
}
@dmitriiabramov ada ide mengapa ini terjadi?
Menambahkan displayName
ke komponen Anda akan memperbaikinya
Istanbul membungkus fungsi dengan fungsi anonim lainnya dan kami mengambil nama fungsi yang diberikan node ke komponen yang dirender :( -- @cpojer https://github.com/facebook/jest/issues/1824#issuecomment -250376673
@nsand : Misalnya, komponen Icon
sekarang akan terlihat seperti ini:
import React from 'react';
const Icon = ({ name }) => (
<i className={`fa-icon fa-icon--${name}`}></i>
);
Icon.displayName = 'Icon';
export default Icon;
@rogeliog Luar biasa! Terima kasih. Saya melakukan beberapa debugging sedikit yang lalu dan telah memperhatikan jika saya memanggil children()
pada pembungkusnya, bahwa ada perbedaan yang terlihat.
tes npm
[ { '$$typeof': Symbol(react.element),
type: [Function: Icon],
key: null,
ref: null,
props: [Object],
_owner: null,
_store: {} } ]
vs
tes npm -- --cakupan
[ { '$$typeof': Symbol(react.element),
type: [Function],
key: null,
ref: null,
props: [Object],
_owner: null,
_store: {} } ]
Di mana perbedaannya adalah bahwa Fungsi dinamai npm test
. Jadi ini tampaknya berjalan seiring dengan apa yang Anda posting, dan proposal Anda memang memperbaiki masalah. Terima kasih, @thymikee dan @rogeliog!
Komentar yang paling membantu
Menambahkan
displayName
ke komponen Anda akan memperbaikinya@nsand : Misalnya, komponen
Icon
sekarang akan terlihat seperti ini: