هل تريد طلب ميزة أو الإبلاغ عن خطأ ؟
حشرة
ما هو السلوك الحالي؟
تنفيذ 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
}
@ dmitriiabramov أي أفكار حول لماذا يحدث هذا؟
يجب أن تؤدي إضافة displayName
إلى مكوناتك إلى إصلاحه 😄
يلتف Istanbul على وظائف مع وظائف مجهولة أخرى ونأخذ اسم الوظيفة الذي تعطيه العقدة للمكوِّن المُنتج :( -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;
تضمين التغريدة شكرا لك. كنت أقوم ببعض عمليات التصحيح منذ قليل ولاحظت أنه إذا اتصلت بـ children()
على الغلاف ، فإن هناك فرقًا واضحًا.
اختبار npm
[ { '$$typeof': Symbol(react.element),
type: [Function: Icon],
key: null,
ref: null,
props: [Object],
_owner: null,
_store: {} } ]
ضد
اختبار npm - - Coverage
[ { '$$typeof': Symbol(react.element),
type: [Function],
key: null,
ref: null,
props: [Object],
_owner: null,
_store: {} } ]
حيث يكون الاختلاف هو أن الوظيفة تمت تسميتها بـ npm test
. لذلك يبدو أن هذا يسير جنبًا إلى جنب مع ما نشرته ، واقتراحك يعمل بالفعل على حل المشكلة. شكرا لك ، thymikee وrogeliog!
التعليق الأكثر فائدة
يجب أن تؤدي إضافة
displayName
إلى مكوناتك إلى إصلاحه 😄nsand : على سبيل المثال ،
Icon
كما يلي: