0
React JSXコンポーネントのテストフレームワークにはかなり新しく、コンポーネントが正しくレンダリングされるかどうかをテストするときに1つの問題が発生しました。それはそのrender
メソッドの中にref
〜this
を含んでおり、私はそれをどのように単体テストするか(または無視してテストが失敗しないように)考えていません。ユニットテストリアクションコンポーネントが自己参照である
チャイをテスト用に使用しています。
これはコンポーネントです:
export default class TopTooltip extends Component {
render() {
const { ident, title} = this.props;
return (
<Tooltip
className={`${className} top-banner-tooltip`}
id={ident}
ref={this}
>
foo
</Tooltip>
);
}
}
...と私のユニットテスト:期待通りの参照ではないため
import { expect } from 'chai';
import { Tooltip } from 'react-bootstrap';
import { shallow } from 'enzyme';
describe('TopTooltip',() => {
describe('renders',() => {
it('all injected values',() => {
const t = (<TopTooltip
title="tooltip"
ident="xyz"
className="myClass"
/>);
const comp = shallow(t);
expect(comp.find(Tooltip).at(0).node)
.to.equalJSX(
<Tooltip
className="myClass top-banner-tooltip"
id="xyz"
ref={t.this}
>
<span className="title">tooltip</span>
foo
</Tooltip>
);
});
});
});
しかし、これは失敗します。
expected ref={[object Object]}
but got ref={undefined}
誰もがこの問題で私を助けることができますか?私は、この参照がテスト中に無視されるべきであると指定することでもうまくいっています。
私はあなたが酵素を使用することをお勧めしますが(http://airbnb.io/酵素/ドキュメント/ガイド/ mocha.html)強力なツールを使用していくつかのテストを行う。チャイの統合(https://github.com/producthunt/chai-enzyme)のためのプラグインもあります:) –
@MichaelRasoahaingo私は実際に酵素を使用します(それは浅い方法が由来しています)。このシナリオでどのように適用すべきか、具体的にお答えください。 – Smajl