Ich verwende Enzyme
, um meine React-Komponenten zu testen. Ich verstehe, dass ich, um die rohe, nicht verbundene Komponente zu testen, sie einfach exportieren und testen müsste (das habe ich getan). Ich habe es geschafft, einen Test für die angeschlossene Komponente zu schreiben, aber ich bin mir nicht sicher, ob das der richtige Weg ist und was genau ich für die angeschlossene Komponente testen möchte.Redux: Wie man eine verbundene Komponente prüft?
Container.jsx
import {connect} from 'react-redux';
import Login from './Login.jsx';
import * as loginActions from './login.actions';
const mapStateToProps = state => ({
auth: state.auth
});
const mapDispatchToProps = dispatch => ({
loginUser: credentials => dispatch(loginActions.loginUser(credentials))
});
export default connect(mapStateToProps, mapDispatchToProps)(Login);
Container.test.js
import React from 'react';
import {Provider} from 'react-redux';
import {mount, shallow} from 'enzyme';
import {expect} from 'chai';
import LoginContainer from '../../src/login/login.container';
import Login from '../../src/login/Login';
describe('Container Login',() => {
it('should render the container component',() => {
const storeFake = state => ({
default:() => {
},
subscribe:() => {
},
dispatch:() => {
},
getState:() => ({ ...state })
});
const store = storeFake({
auth: {
sport: 'BASKETBALL'
}
});
const wrapper = mount(
<Provider store={store}>
<LoginContainer />
</Provider>
);
expect(wrapper.find(LoginContainer).length).to.equal(1);
const container = wrapper.find(LoginContainer);
expect(container.find(Login).length).to.equal(1);
expect(container.find(Login).props().auth).to.eql({ sport: 'BASKETBALL' });
});
});
Würden das die Tests für mapStateToProps und mapDispatch ausreichen? – Umair
Ja in der Tat .. Sie müssen mit einem Coverage-Tool überprüfen, finden Sie, dass es vollständig abgedeckt ist – anoop
Die eigentliche Sache, die ich wissen möchte, ist im Grunde Was testen, wenn wir die Container/Smart-Komponente testen werden? – Umair