Meteor/React 使用 Enzyme 的 Mocha 测试 - 找不到模块 'has'
Meteor/React Mocha tests using Enzyme - Cannot find module 'has'
如前所述,我是 运行 一个使用 React 的 Meteor 应用程序,并开始使用 Mocha 编写测试。目前我有一个基本测试,什么都不测试。
client/prospects/ProspectForm.tests.jsx
import React from 'react';
import { shallow } from 'enzyme';
describe('<Foo />', () => {
it('calls componentDidMount', () => {
});
});
当我启动测试服务器时出现以下错误
找不到模块 'has'。看起来问题出在 enzyme 上,但是当我创建一个新的 meteor 应用程序并添加 enzyme 和 practicalmeteor:mocha,然后添加相同的测试时它工作正常,所以它一定与我的环境有关应用
这是我的package.json
{
"name": "myApp",
"private": true,
"scripts": {
"start": "meteor run"
},
"dependencies": {
"material-ui": "^0.15.0",
"meteor-node-stubs": "~0.2.0",
"react": "^15.0.2",
"react-addons-pure-render-mixin": "^15.0.1",
"react-datepicker": "^0.27.0",
"react-dom": "^15.0.2",
"react-mounter": "^1.2.0",
"react-s-alert": "^1.1.4",
"react-tap-event-plugin": "^1.0.0"
},
"devDependencies": {
"enzyme": "^2.3.0"
}
}
这是我的流星包文件
# edgee:slingshot # Send files to storage service.
# peerlibrary:aws-sdk # Amazon SDK for S3/EC2/etc...
# CORE PACKAGES
meteor-base # Meteor platform
mobile-experience # Mobile Optimizations
logging # Meteor internal logging
ejson # Extends JSON Types
tracker # Reactive Data Sources
email # Send emails
accounts-password # Authentication for users.
es5-shim # ECMAScript 5 compatibility for older browsers.
ecmascript # Enable ECMAScript2015+ syntax
standard-minifier-css # CSS Minification
standard-minifier-js # Javascript Minification
static-html # Adds global head tag
reload # Active reload
react-meteor-data # Used for react data mixins
stevezhu:lodash # Javascript utility library.
momentjs:moment # Date library for Javascript.
johnantoni:meteor-normalize # normalizes css
fourseven:scss # SASS stylesheets.
fortawesome:fontawesome # Icons.
natestrauser:animate-css # Animations using CSS.
mongo # Mongo DB
aldeed:collection2 # Schemas and validations for database collections.
dburles:collection-helpers # Create data helpers in ./lib available to client and server.
meteortoys:allthings # A number of helpers for deveopment. Activate with control+m
kadira:flow-router # Router.
mystor:device-detection # Detect device user is using.
semantic:ui-css
practicalmeteor:mocha
有人知道这里发生了什么吗?
如果您还没有安装 these 2 dependencies,您还需要安装它们:
npm i --save-dev react-addons-test-utils
npm i --save-dev react-dom
看起来你有 react-dom,但你缺少测试工具。
运行 meteor 更新为我解决了这个问题,我也确实必须按照 Davin 所说的去做。
如前所述,我是 运行 一个使用 React 的 Meteor 应用程序,并开始使用 Mocha 编写测试。目前我有一个基本测试,什么都不测试。
client/prospects/ProspectForm.tests.jsx
import React from 'react';
import { shallow } from 'enzyme';
describe('<Foo />', () => {
it('calls componentDidMount', () => {
});
});
当我启动测试服务器时出现以下错误
找不到模块 'has'。看起来问题出在 enzyme 上,但是当我创建一个新的 meteor 应用程序并添加 enzyme 和 practicalmeteor:mocha,然后添加相同的测试时它工作正常,所以它一定与我的环境有关应用
这是我的package.json
{
"name": "myApp",
"private": true,
"scripts": {
"start": "meteor run"
},
"dependencies": {
"material-ui": "^0.15.0",
"meteor-node-stubs": "~0.2.0",
"react": "^15.0.2",
"react-addons-pure-render-mixin": "^15.0.1",
"react-datepicker": "^0.27.0",
"react-dom": "^15.0.2",
"react-mounter": "^1.2.0",
"react-s-alert": "^1.1.4",
"react-tap-event-plugin": "^1.0.0"
},
"devDependencies": {
"enzyme": "^2.3.0"
}
}
这是我的流星包文件
# edgee:slingshot # Send files to storage service.
# peerlibrary:aws-sdk # Amazon SDK for S3/EC2/etc...
# CORE PACKAGES
meteor-base # Meteor platform
mobile-experience # Mobile Optimizations
logging # Meteor internal logging
ejson # Extends JSON Types
tracker # Reactive Data Sources
email # Send emails
accounts-password # Authentication for users.
es5-shim # ECMAScript 5 compatibility for older browsers.
ecmascript # Enable ECMAScript2015+ syntax
standard-minifier-css # CSS Minification
standard-minifier-js # Javascript Minification
static-html # Adds global head tag
reload # Active reload
react-meteor-data # Used for react data mixins
stevezhu:lodash # Javascript utility library.
momentjs:moment # Date library for Javascript.
johnantoni:meteor-normalize # normalizes css
fourseven:scss # SASS stylesheets.
fortawesome:fontawesome # Icons.
natestrauser:animate-css # Animations using CSS.
mongo # Mongo DB
aldeed:collection2 # Schemas and validations for database collections.
dburles:collection-helpers # Create data helpers in ./lib available to client and server.
meteortoys:allthings # A number of helpers for deveopment. Activate with control+m
kadira:flow-router # Router.
mystor:device-detection # Detect device user is using.
semantic:ui-css
practicalmeteor:mocha
有人知道这里发生了什么吗?
如果您还没有安装 these 2 dependencies,您还需要安装它们:
npm i --save-dev react-addons-test-utils
npm i --save-dev react-dom
看起来你有 react-dom,但你缺少测试工具。
运行 meteor 更新为我解决了这个问题,我也确实必须按照 Davin 所说的去做。