2017-12-15 40 views
0

JestとEnzymeを使用してReactでコンポーネントをテストしようとしています。Jest Trueを期待するときにFalseを返す

NavigationコンポーネントがNavItemをレンダリングしていることを確認したいと思います。

試験:

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

import Navigation from '../src/components/navigation/Navigation'; 
import NavItem from '../src/components/navigation/NavItem'; 

describe('.Navigation Component',() => { 
    it('should contain NavItem',() => { 
    const wrapper = shallow(<Navigation />); 
    console.log(wrapper.debug()); 
    expect(wrapper.contains(<NavItem {...mockNavitem} />)).toEqual(true); 
    }); 
}); 

const mockNavitem = { href: 'foo', text: 'bar', activeClass: 'boo' }; 

ナビゲーションコンポーネント:

import React from 'react'; 
import NavItem from './NavItem'; 

const navItems = [ 
    { 
    id: 0, 
    href: '/', 
    text: 'Home', 
    activeClass: '', 
    }, 
    { 
    id: 1, 
    href: '/page-two', 
    text: 'Page Two', 
    activeClass: '', 
    }, 
]; 

const Navigation =() => (
    <ul> 
    {navItems.map(item => (
     <li key={item.id}> 
     <NavItem {...item} /> 
     </li> 
    ))} 
    </ul> 
); 

export default Navigation; 

NavItemsコンポーネント:

import React from 'react'; 
import PropTypes from 'prop-types'; 
import { NavLink } from 'react-router-dom'; 

const NavItem = ({ href, text, activeClass }) => (
    <NavLink to={href} activeClassName={activeClass}> 
    {text} 
    </NavLink> 
); 

NavItem.propTypes = { 
    href: PropTypes.string.isRequired, 
    text: PropTypes.string.isRequired, 
    activeClass: PropTypes.string.isRequired, 
}; 

export default NavItem; 

次のようにテストランナーから出力される。

FAIL __tests__/Navigation.test.jsx 
    ● Console 

    console.log __tests__/Navigation.test.jsx:10 
     <ul> 
     <li> 
      <NavItem id={0} href="/" text="Home" activeClass="" /> 
     </li> 
     <li> 
      <NavItem id={1} href="/page-two" text="Page Two" activeClass="" /> 
     </li> 
     </ul> 

    ● .Navigation Component › should contain NavItem 

    expect(received).toEqual(expected) 

    Expected value to equal: 
     true 
    Received: 
     false 

コンポーネントを出力するためにコンソールログステートメントを追加しましたが、結果に表示されますが、有効なテストではありません。

私は非常に反応しやすいので、おそらく非常にn00bの間違いです。

ご協力いただければ幸いです。

答えて

0

NavigationコンポーネントをトラバースしてNavItemを探してみてください。

expect(wrapper.find(NavItem)).toHaveLength(1); 
+0

これに協力いただきありがとうございます:) 私はここでのショーなどのエラーで、テストはまだしかし失敗し、この時間をあなたが提案した変更を加えました - https://ibb.co/dRt1Km – pgGriff

+0

I間違いをした、それは編集されている、あなたはもう一度試すことができます – dcodesmith

+0

ありがとうございます:) – pgGriff

関連する問題