2017-02-17 5 views
1

Ich bin Tests für meine Anwendung zu schreiben. Ich mache es das erste Mal und habe ein paar Probleme. Wenn ich Tests durchführe bekomme ich Fehler..Fail ist auf dem Bild unten. Was ich machen muss? Ich benutze einen Mokka und ein Enzym. enter image description hereFailing Test in Reaktion Anwendung

Code of Test

import 'jsdom-global/register'; 
 
import React from 'react'; 
 
import {mount, shallow} from 'enzyme'; 
 
import {expect} from 'chai'; 
 

 
import Header from '../../src/components/Header'; 
 
import Link from '../../src/components/Link'; 
 

 

 
describe ('',() => { 
 
    it('should have a logo image', function() { 
 
    const wrapper = mount(); 
 
    expect(wrapper.find('img')).to.have.length(1); 
 
    }); 
 
});

Und Code meiner Komponente:

class Header extends React.Component { 
 
    static propTypes = { 
 
    intl: intlShape.isRequired, 
 
    }; 
 

 
    componentDidMount() { 
 
    this.searchbox.refs.queryField.focus(); 
 
    } 
 

 
    render() { 
 
    return (
 
     <div className={s.root}> 
 
     <div className={s.container}> 
 
      <img className={s.alphaRibbon} src={alphaRibbon} alt="alpha" width="50px" /> 
 
      <Link className={s.brand} to="/"> 
 
      <img src={logoUrl2x} srcSet={`${logoUrl2x} 2x`} width="67" height="38" alt="8kolo" /> 
 
      <span className={s.brandTxt}> 
 
       <FormattedMessage {...messages.brand} /> 
 
      </span> 
 
      </Link> 
 
      <Navigation className={s.nav} /> 
 
      <div className={s.search}> 
 
      <SearchBoxRedirect 
 
       ref={sb => { this.searchbox = sb; }} 
 
       hitsRoute="/" 
 
       searchOnChange 
 
       placeholder={this.props.intl.formatMessage(messages.searchPlaceholder)} 
 
       prefixQueryFields={['full_name']} 
 
      /> 
 
      </div> 
 
      {/* <LanguageSwitcher /> */} 
 
     </div> 
 
     {/* <div className={s.banner}> 
 
      <div className={s.container}> 
 
      <FormattedMessage tagName="p" {...messages.bannerDesc} /> 
 
      </div> 
 
     </div>*/} 
 
     </div> 
 
    ); 
 
    } 
 
} 
 

 
export default withStyles(s)(injectIntl(Header));

Antwort

0

Sie sind n ot Befestigungskomponente. Sie sollten die Komponente als Argument an übergeben.

const wrapper = mount();

Sollte sein:

const wrapper = mount(<Header />);

+0

ich versucht habe. Es ist auch falsch –

+0

wenn ich

dann gebe ich Fehler: Fehler: Es sieht aus wie Sie 'mount()' aufgerufen, ohne ein globales Dokument geladen wird. –

+0

So führen Sie Tests ohne einen Browsertreiber aus. In diesem Fall können Sie die Komponente nicht in dom mounten, da es in Ihrer Umgebung kein Dom gibt. Sie sollten 'jsdom' verwenden, um den Browser zu verspotten. Oder Sie können es nicht mit 'shallow' testen, aber in diesem Fall werden Sie nicht in der Lage sein, Komponenten aus der Lebenszyklus-Methode zu testen. –