2017-02-28 10 views
0

Propsを使用してLoginContainerコンポーネントがHeader with Enzymeに存在するかどうかをテストしようとしていますが、コンポーネント/ propsのテストはReactJSのEnzymeで定義されていません

import React from 'react' 
import Header from '../components/Header' 
import LoginContainer from './LoginContainer' 

const App =() => (
    <Header login={<LoginContainer />} /> 
) 
export default App 

マイヘッダー:

はここに私のメインのアプリです

import React from "react"; 
const Header = ({login}) => 
    <header role="banner"> 
     {login} 
    </header> 
export default Header 

そして、これは私のテストで:

import React from 'react' 
import { shallow } from 'enzyme' 
import Header from '../components/Header' 

const setup = props => { 
    const component = shallow(
     <Header {...props} /> 
    ) 
    return { 
     component: component 
    } 
} 
describe('Header component',() => { 
    it('should render login',() => { 
     const { component } = setup(); 
     console.log(component.props({ login })) //this is undefined 
    }) 
}) 

問題がある、私はテストを実行したときにそれがいるようですlogin(LoginContainer)propsは未定義です。誰かアドバイスをお願いできますか?

+0

ここで、セットアップを呼び出しますか?私は何の呼び出しも見ません。 –

+0

申し訳ありません、追加を忘れました。私はちょうど更新しました。 –

+0

あなたは 'setup'に何も渡していません –

答えて

0

セットアップに何も渡していません。

import React from 'react' 
import { shallow } from 'enzyme' 
import Header from '../components/Header' 

const setup = props => { 
    const component = shallow(
     <Header {...props} /> 
    ) 
    return { 
     component: component 
    } 
} 
describe('Header component',() => { 
    it('should render login',() => { 
     const { component } = setup({ login: <LoginContainer/> }); 
     expect(component.props().login).toBeDefined() 
    }) 
}) 
+0

アドバイスありがとう、あなたの解決策はまだ定義されていないか、または期待値が定義されていて、代わりに" undefined "を受け取っています –

0

インスタンスを最初に取得する必要があります。

NOTE: When called on a shallow wrapper, .props() will return values for props on the root node that the component renders, not the component itself. To return the props for the entire React component, use wrapper.instance().props. See .instance() => ReactComponent


  it('should have props',() => {     
       const l = <div>Login ...</div>; 
       const {component} = setup({login:l}); 
       console.log(component.instance().props.login); 
       expect(component.instance().props.login).to.exist; 
      }); 
+0

上記にエラーがあります:TypeError:未定義。 :( –

+0

これは私が例を使ってChaiを使っているからです。あなたがChaiを使っていないなら、あなたが期待するものに応じて 'to.have.length'や' to.equal'のような別の期待を使うべきです。 – Hosar

+0

私は知っています私は 'to.have.length'、' to.equal'、 '.to.equal(true)'、 'toBe(1)'のすべてを試しましたが、どちらもうまくいきませんでした。私が間違っていることを知らない:( –

関連する問題