【问题标题】:An error appears when using Enzyme's mount with material-ui's RadioButton将 Enzyme mount 与 material-ui Radio Button 一起使用时出现错误
【发布时间】:2018-04-10 13:25:13
【问题描述】:

在 mocha 中,我尝试使用 engyme 的 mount 测试 material-ui 的 RadioButton,但出现错误。

有什么办法可以避免吗?

代码: 包.json

{ "name": "testradiobutton", “版本”:“1.0.0”, “描述”: ””, “主”:“index.js”, “脚本”:{ "test": "NODE_ENV=nodes mocha --compilers js:babel-register --require babel-polyfill ./nodes/test.setup.js --recursive $(find nodes -name '*.spec.js')" }, “作者”: ””, “许可证”:“ISC”, “开发依赖”:{ "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-polyfill": "^6.26.0", "babel-preset-es2015": "^6.24.1", "babel-preset-es2016": "^6.24.1", "babel-preset-power-assert": "^1.0.0", "babel-preset-react": "^6.24.1", "babel-preset-stage-0": "^6.24.1", "babel-register": "^6.26.0", “酶”:“^2.9.1”, "jsdom": "^11.3.0", "摩卡": "^3.5.3", “反应测试渲染器”:“^15.6.2”, "power-assert": "^1.4.4", "webpack": "^3.5.6", “webpack-init”:“^0.1.2” }, “依赖”:{ "flexboxgrid": "^6.3.1", “材料-ui”:“^0.19.4”, “道具类型”:“^15.6.0”, “反应”:“^15.6.2”, “反应域”:“^15.6.2”, “反应弹性盒网格”:“^1.1.5” } }

sample.spec.js ```

import React from 'react';
import {mount} from 'enzyme';

import getMuiTheme from 'material-ui/styles/getMuiTheme';
import PropTypes from 'prop-types';
import {RadioButton, RadioButtonGroup} from 'material-ui/RadioButton';

describe('material ui', () => {
    it('can use with in mocha on enzyme', () => {
        const muiTheme = getMuiTheme();
        const wrapper = mount(
            <RadioButton
                value="foo"
                label="bar"
            />,
            {
                context: {muiTheme},
                childContextTypes: {muiTheme: PropTypes.object}
            });
    });
});

```

test.setup.js

从'jsdom'导入{JSDOM}; 常量 jsdom = 新 JSDOM(''); 常量 {窗口} = jsdom; 函数 copyProps(src, 目标) { 常量道具 = Object.getOwnPropertyNames(src) .filter(prop => typeof target[prop] === '未定义') .map(prop => Object.getOwnPropertyDescriptor(src, prop)); Object.defineProperties(目标,道具); } global.window = 窗口; 全局.FormData = 窗口.FormData; 全局.document = window.document; global.navigator = { userAgent: 'node.js', 展示: '' }; global.display = '块'; 复制道具(窗口,全局);

错误

> NODE_ENV=nodes mocha --compilers js:babel-register --require babel-polyfill ./nodes/test.setup.js --recursive $(find nodes -name '*.spec.js') 材质界面 1) 可以在 mocha on 酶上使用 with 0通过(160ms) 1 次失败 1)材料ui可以在mocha on酵素中使用: TypeError:无法设置未定义的属性“显示” 在 Object.setValueForStyles (node_modules/react-dom/lib/CSSPropertyOperations.js:195:26) 在 ReactDOMComponent._updateDOMProperties (node_modules/react-dom/lib/ReactDOMComponent.js:888:29) 在 ReactDOMComponent.mountComponent (node_modules/react-dom/lib/ReactDOMComponent.js:518:12) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactDOMComponent.mountChildren (node_modules/react-dom/lib/ReactMultiChild.js:234:44) 在 ReactDOMComponent._createInitialChildren (node_modules/react-dom/lib/ReactDOMComponent.js:701:32) 在 ReactDOMComponent.mountComponent (node_modules/react-dom/lib/ReactDOMComponent.js:520:12) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactDOMComponent.mountChildren (node_modules/react-dom/lib/ReactMultiChild.js:234:44) 在 ReactDOMComponent._createInitialChildren (node_modules/react-dom/lib/ReactDOMComponent.js:701:32) 在 ReactDOMComponent.mountComponent (node_modules/react-dom/lib/ReactDOMComponent.js:520:12) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactDOMComponent.mountChildren (node_modules/react-dom/lib/ReactMultiChild.js:234:44) 在 ReactDOMComponent._createInitialChildren (node_modules/react-dom/lib/ReactDOMComponent.js:701:32) 在 ReactDOMComponent.mountComponent (node_modules/react-dom/lib/ReactDOMComponent.js:520:12) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactDOMComponent.mountChildren (node_modules/react-dom/lib/ReactMultiChild.js:234:44) 在 ReactDOMComponent._createInitialChildren (node_modules/react-dom/lib/ReactDOMComponent.js:701:32) 在 ReactDOMComponent.mountComponent (node_modules/react-dom/lib/ReactDOMComponent.js:520:12) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 ReactCompositeComponentWrapper.performInitialMount (node_modules/react-dom/lib/ReactCompositeComponent.js:368:34) 在 ReactCompositeComponentWrapper.mountComponent (node_modules/react-dom/lib/ReactCompositeComponent.js:255:21) 在 Object.mountComponent (node_modules/react-dom/lib/ReactReconciler.js:43:35) 在 mountComponentIntoNode (node_modules/react-dom/lib/ReactMount.js:102:32) 在 ReactReconcileTransaction.perform (node_modules/react-dom/lib/Transaction.js:141:20) 在 batchedMountComponentIntoNode (node_modules/react-dom/lib/ReactMount.js:124:15) 在 ReactDefaultBatchingStrategyTransaction.perform (node_modules/react-dom/lib/Transaction.js:141:20) 在 Object.batchedUpdates (node_modules/react-dom/lib/ReactDefaultBatchingStrategy.js:60:26) 在 Object.batchedUpdates (node_modules/react-dom/lib/ReactUpdates.js:95:27) 在 Object._renderNewRootComponent (node_modules/react-dom/lib/ReactMount.js:317:18) 在 Object._renderSubtreeIntoContainer (node_modules/react-dom/lib/ReactMount.js:399:32) 在 Object.render (node_modules/react-dom/lib/ReactMount.js:420:23) 在 Object.renderIntoDocument (node_modules/react-dom/lib/ReactTestUtils.js:89:21) 在 renderWithOptions (node_modules/enzyme/build/react-compat.js:200:24) 在新的 ReactWrapper (node_modules/enzyme/build/ReactWrapper.js:94:59) 挂载时(node_modules/enzyme/build/mount.js:19:10) 在上下文。 (节点/sample.spec.js:11:25)

【问题讨论】:

标签: reactjs mocha.js material-ui enzyme


【解决方案1】:

您没有安装任何组件。

我希望看到提供给 mount() 的 React 元素

  const wrapper = mount(
    <RadioButton /> // must supply a React element
    ,
    {
      context: {muiTheme},
      childContextTypes: {muiTheme: PropTypes.object}
    }
  );

【讨论】:

  • 感谢您的回答,很抱歉回复晚了。我确认了存储库,我只是错误地复制了该代码。我已经提供了一个 React 元素。对不起我的错误。
猜你喜欢
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 2019-10-18
  • 2021-06-25
相关资源
最近更新 更多