mocha没有重新加载源React组件.jsx文件

时间:2016-04-06 14:13:58

标签: javascript reactjs mocha babeljs

我正在使用mocha来测试我的反应组件。我像这样设置了package.json

{
  "name": "client",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "NODE_ENV=test mocha './app/**/*.spec.js' --compilers js:babel-core/register --require testSetup.js",
    "test:watch": "npm test -- --watch",
    "start": "NODE_ENV=dev node server.js"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "aphrodite": "^0.2.0",
    "babel-core": "^6.7.4",
    "babel-loader": "^6.2.4",
    "babel-polyfill": "^6.7.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "babel-preset-stage-0": "^6.5.0",
    "babel-register": "^6.7.2",
    "css-loader": "^0.23.1",
    "enzyme": "^2.2.0",
    "eslint": "^2.6.0",
    "eslint-plugin-react": "^4.2.3",
    "expect": "^1.16.0",
    "jsdom": "^8.2.0",
    "mocha": "^2.4.5",
    "mocha-jsdom": "^1.1.0",
    "node-sass": "^3.4.2",
    "npm-install-webpack-plugin": "^3.0.0",
    "react-addons-test-utils": "^0.14.8",
    "react-dom": "^0.14.8",
    "react-hot-loader": "^1.3.0",
    "sinon": "^1.17.3",
    "style-loader": "^0.13.1",
    "webpack": "^1.12.14",
    "webpack-dev-server": "^1.14.1",
    "webpack-notifier": "^1.3.0"
  },
  "dependencies": {
    "axios": "^0.9.1",
    "cuid": "^1.3.8",
    "delay": "^1.3.1",
    "fecha": "^2.1.0",
    "file-loader": "^0.8.5",
    "history": "^2.0.1",
    "intl": "^1.1.0",
    "lodash": "^4.6.1",
    "react": "^0.14.8",
    "react-addons-shallow-compare": "^0.14.8",
    "react-dom": "^0.14.8",
    "react-redux": "^4.4.1",
    "react-router": "^2.0.1",
    "react-router-redux": "^4.0.0",
    "redux": "^3.3.1",
    "redux-crud": "^1.0.0",
    "redux-saga": "^0.9.5",
    "reselect": "^2.2.1",
    "seamless-immutable": "^5.1.1",
    "url-loader": "^0.5.7"
  }
}

这是用于测试Selector.jsx组件的测试文件Selector.spec.js:

import React from 'react';
import { shallow, mount } from 'enzyme';
import sinon from 'sinon';
import expect from 'expect';
import Selector from './Selector.jsx';
describe('Selector Component', function () {
  const setup = (optionalProps={}) => {
    const props = {
      onChange: sinon.spy(),
      value: '3',
      values: ['1','2','3','4'],
      ...optionalProps
    }
    const output = mount(<Selector {...props} />)
    return {
      output,
      props,
    }
  }

  describe('when using scalar values', function () {
    it('should allow all props to be passed down', () => {
      const { output, props } = setup()
      const actual  = output.props()
      const expected= props

      expect(actual).toEqual(expected)
    });
  });
});

最后,Selector.jsx本身:

import React, { PropTypes } from 'react';
import map from 'lodash/map';

const Selector = ({
  onChange,
  value,
  values, // [{value, name}]
}) => (
  <select onChange={e=>onChange(e.target.value)}
    value={value}
  >
    {values[0].value 
      ? map(values, (val,i) => 
          <option 
            key={i}
            value={val.value}
          >
            {val.name} boo!
          </option>
        )
      : map(values, val =>
          <option 
            key={val}
            value={val}
          >
            {val}
          </option>
        )
    }
  </select>
)
Selector.propTypes = {
  onChange: PropTypes.func.isRequired,
  value: PropTypes.oneOfType([
    PropTypes.string,
    PropTypes.number,
  ]),
  values: PropTypes.oneOfType([
    PropTypes.arrayOf(PropTypes.shape({
      value: PropTypes.any.isRequired,
      name: PropTypes.string,
    })),
    PropTypes.array
  ]).isRequired,
};

export default Selector;

所以现在发生的是每当我保存测试文件Selector.spec.js时,它重新运行测试,但是我对源文件所做的任何更改都没有得到测试,我必须要ctrl + c杀死测试并重新启动它。这有什么原因吗?

谢谢!

0 个答案:

没有答案