Jest没有找到ReactJS

时间:2016-05-29 16:27:39

标签: reactjs jestjs

你能说出为什么这个Jest测试失败了ReactJS吗?我正在尝试测试我的顶级React组件App

错误:     运行时错误        - 不变违规:_registerComponent(...):目标容器不是DOM元素。             at invariant(node_modules / react / node_modules / fbjs / lib / invariant.js:38:15)

app.js

// ./app.js
var React = require('react');
var ReactDOM = require('react-dom');

import Howdy from './app/Howdy';


export default class App extends React.Component {
  render() {
    return (
      <div>
        Hello 
      </div>
    );
  }
};

ReactDOM.render(
  <App />,
  document.getElementById('app')
);

应用-test.js

// __tests__/app-test.js

jest.unmock('../app');

import React from 'react';
import ReactDOM from 'react-dom';
import TestUtils from 'react-addons-test-utils';
import App from '../app';


describe('Test App Component', () => {

  it('sample test...', () => {
    const myApp = TestUtils.renderIntoDocument(
      <App />
    );

    const myAppNode = ReactDOM.findDOMNode(myApp);

    expect(myAppNode.isElement).toEqual(true);
  });
});

1 个答案:

答案 0 :(得分:0)

const myApp = TestUtils.renderIntoDocument(
  <App />

在上面的块中使用let代替const

  

const表示无法重新分配标识符。 (不要与不可变值混淆。与真正的不可变数据类型(如Immutable.js和Mori生成的数据类型)不同,const对象可以使属性发生变异。)   如果我不需要重新分配,constlet的默认选择,因为我希望代码中的使用尽可能清晰。   当我需要重新分配变量时,我使用let。因为我使用一个变量来表示一个事物,let的用例往往是循环或数学算法。   我不在ES6中使用var。循环的块范围有价值,但我想不出我希望var超过let的情况。

ref