2017-02-28 6 views
0

Ich versuche zu testen, ob die LoginContainer-Komponente über Requisiten in der Kopfzeile mit Enzym existiert, aber ich habe kein Glück.Testen für Komponente/Requisiten ist undefined mit Enzym in ReactJS

Hier ist mein Haupt-App:

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

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

Meine Rubrik:

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

Und das ist mein Test:

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 
    }) 
}) 

Das Problem ist, wenn ich den Test ausführen es scheint, dass Login (LoginContainer) Requisiten ist undefiniert. Kann mir bitte jemand einen Rat geben?

+0

wo rufen Sie Setup auf? Ich sehe keinen Anruf. –

+0

Entschuldigung, habe vergessen hinzuzufügen. Ich habe gerade aktualisiert. –

+0

Sie geben nichts an 'setup' weiter. –

Antwort

0

Sie geben nichts an Setup weiter.

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

Vielen Dank für den Hinweis, aber Ihre Lösung zeigt immer noch undefined oder Erwarteter Wert an, stattdessen" undefined " –

0

Sie sollten die Instanz zuerst erhalten.

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

z.B.

  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

Das obige gibt einen Fehler: TypeError: Kann Eigenschaft 'exist' von nicht lesen nicht definiert. :( –

+0

Das ist, weil ich Chai für das Beispiel verwende. Wenn Sie Chai nicht verwenden, sollten Sie eine andere Erwartung wie 'to.have.length' oder' to.equal' verwenden, abhängig davon, was Sie erwarten. – Hosar

+0

Ich weiß Ich habe alles versucht, um '.have.length',' toqual', '.toequal (true)', 'toBe (1)' aber keiner von ihnen hat funktioniert. Immer 'undefined' weiß nicht was ich falsch mache :( –

Verwandte Themen