私はシンプルで、antdからその利用カードをコンポーネントに反応している:酵素:浅いが、内側に反応-Reduxのコンポーネントをレンダリング
import React, { Component } from 'react';
import { connect } from 'react-redux';
import { Card } from 'antd';
export class TBD extends Component {
constructor() {
super();
}
render() {
return (
<Card title={this.props.pathname}>
TODO
</Card>
);
}
}
export let select = (state) => {
return state.route;
};
export default connect(select)(TBD);
今、私はいくつかの簡単なテストを書き、チェックしたい、私のTBDコンポーネントの使用カード
ことimport React from 'react';
import {mount, shallow} from 'enzyme';
import {Provider, connect} from 'react-redux';
import {createMockStore} from 'redux-test-utils';
import {expect} from 'chai';
import chai from 'chai';
import chaiEnzyme from 'chai-enzyme';
chai.use(chaiEnzyme());
import { Card } from 'antd';
import TBDConnected, {TBD, select} from '../src/js/components/TBD';
describe('Fully Connected:', function() {
it('show selected item text', function() {
const expectedState = {route: {pathname: 'Menu1'}};
const store = createMockStore(expectedState);
const ConnectedComponent = connect(select)(TBDConnected);
const component = shallow(<ConnectedComponent store={store} />).shallow().shallow();
console.log(component.debug());
expect(component.equals(<Card/>)).is.equal(true);
});
});
そして3浅い私に
<Component title="Menu1">
TODO
</Component>
を返すので、それは、失敗しかし、私は期待してい
<Card title="Menu1">
TODO
</Card>
後1より多くの私はそれではなく、コンポーネントにカードを、それをレンダリングし、私が手に私が欲しいものを引き起こすことができますどのように、なぜカードは、私は理解していないよ、レンダリングからの純粋なHTMLを取得しレンダリングします。
更新
私の質問を単純化する例。コンソールで
describe('TBD', function() {
it('Renders a Card', function() {
const component = shallow(<TBD />);
console.log(component.debug());
expect(component.equals(<Card/>)).is.equal(true);
});
});
デバッグ出力:次のテストは失敗
<Component title={[undefined]}>
TODO
</Component>
をしかし、私は期待:
<Card title={[undefined]}>
TODO
</Card>
'connect'は高次のコンポーネントであるため、汎用コンポーネントに' Card'をラップします。私は '浅い'は第1レベル(汎用コンポーネントとなる)だけをレンダリングすると思うでしょう。この議論は役に立つかもしれません:https://github.com/reactjs/redux/issues/1534 –
@DavinTryon、私はすべてのredux部分(接続、ストアなど)を捨てて、 ): '浅い( )'、その後、私は再度結果になる。 '<コンポーネントタイトル="私のタイトル "> TODO '。 –
sepulka