2017-04-09 4 views
0

ich testen möchte, ist NavLink eine bestimmte URL hat:Wie `NavLink` mit Mocha zu testen, von reagieren-Router-dom

Splash.js

import React from 'react'; 
import { NavLink } from 'react-router-dom' 
import Logo from '../shared/logo/index'; 
import * as styles from './style.css'; 

class Splash extends React.Component { 
    render(){ 
    return (
     <div className={styles.indexAppContent}> 
     <NavLink to="/home" className={styles.index}> 
      <Logo /> 
     </NavLink> 
     </div> 
    ); 
    } 
} 

export default Splash; 

-Test

/* eslint-disable object-property-newline */ 
import React from 'react'; 
import ReactTestUtils from 'react-dom/test-utils' 
import { expect } from 'chai'; 
import { NavLink } from 'react-router-dom' 
import { shallow } from 'enzyme'; 


describe('<Splash />',() => { 

    it('Logo links to home',() => { 
    expect(wrapperNavLink.prop('to')) 
     .equals('/home'); 
    }) 

}); 

Wie kann ich den Wert von gerenderten HREFs für die Reaktion testen?

Antwort

2

Es gibt zwei Möglichkeiten, wie Sie testen können, ob Passstützen Ihre Komponente korrekt erreichen.

1.Test Komponente in Isolation -

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow, mount, render } from 'enzyme'; 
import { NavLink } from 'react-router-dom'; 

describe("<NavLink />",() => { 
    it("1.contains correct passed prop",() => { 
     const comp = (
      <NavLink to="/home" className={"test"}> 
       NaveLink Test 
      </NavLink> 
     ); 
     const wrapper = shallow(comp); 
     expect(wrapper.instance().props.to).to.equal("/home"); 
    }); 
}); 

2.Test Komponente als Ganzes beispiel Komponente <Splash /> in Ihrem Fall.

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow, mount, render } from 'enzyme'; 
import { NavLink } from 'react-router-dom'; 
import Splash from './splash'; // <----------- import the component you want to test 

describe("<Splash />",() => { 
    it("2.contains correct passed prop",() => { 
     const comp = (
      <Splash /> 
     ); 
     const wrapper = shallow(comp); 

     expect(wrapper.find(NavLink).first().props().to).to.equal("/home"); 
    }); 
}); 
+0

Danke Kumpel, nahm mich eine Weile, um wieder zu kommen :) Interessant dann. 'wrapper.find (NavLink) .first() .reps() .zu', so dass Sie find verwenden, indem Sie die tatsächliche' Komponente' übergeben. Thanks bud. Gibt es eine klare Dokumentation, die ich übersehen habe? –

+0

@JamieHutber Ihre Begrüßung. Ich denke, Sie können auf Airbnb-Enzym-Dokumente schauen, – WitVault

Verwandte Themen