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 所说的去做。