2016-06-08 70 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

仍然是完全相同的錯誤 –