2016-06-08 71 views
0

我想测试一个反应成分,这里是测试玩笑测试失败作出反应成分

jest.dontMock('../js/components/Navigation.js'); 
var React = require('react/addons'); 
var Navigation = require('../js/components/Navigation.js'); 
var Router = require('react-router').Router; 
var Route = require('react-router').Route; 
var Link = require('react-router').Link; 
TestUtils = React.addons.TestUtils; 

describe('Navigation', function() { 

var NavElement = TestUtils.renderIntoDocument(
    <Navigation items={['nav1', 'nav2', 'nav3']} /> 
); 

    var items = TestUtils.scryRenderedDOMComponentsWithTag(NavElement, 'li'); 


    it('renders each item as a li', function() { 
    expect(items.length).toEqual(3); 


    }); 


}); 

这里是组件

var React = require('react'); 
var Router = require('react-router').Router; 
var Link = require('react-router').Link; 
var RouteHandler = require('react-router').RouteHandler;  

var Navigation = React.createClass({ 
    render: function() { 
     return (
      <div> 
      <header> 
      <ul> 
      <li><Link to="nav1">nav1</Link></li> 
      <li><Link to="nav2">nav2</Link></li> 
      <li><Link to="nav3">nav3</Link></li> 
      </ul> 
      </header> 
      <RouteHandler /> 
      </div> 
      ); 
     } 
    }); 

当我运行“NPM测试”我得到的遵循规则和错误 警告:React.createElement:类型不应该为null,undefined,boolean或number。它应该是一个字符串(用于DOM元素)或ReactClass(用于复合组件)。

- Invariant Violation: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: undefined. 

我错过了什么?

我试着删除和resintsalling节点模块 还试图导入作为

var Navigation = require('../js/components/Navigation.js').default; 

而且使用

modules.export = Navigation; 

回答

0

请问您的组件有

module.exports = App; 

一部分?

您似乎尚未导入得当

您还需要导入部件文件内LinkRouteHandler组件,有权根据您导入阵营的位置。

+0

添加后仍然出现相同的错误。只是为了澄清,我把它添加到文件结尾 –

+0

好吧,现在确保你包含它像这样:'var Navigation = require('../ js/components/Navigation.js');' – Grgur

+0

仍然是完全相同的错误 –