。find() の酵素の例とこのGitHub enzyme-example-jest の例の両方に従って、最も外側の要素をテストおよび検証するための基本コンポーネントを取得していますclassName
が存在しますが、なぜこれが渡されないのかわかりません。
// REACTコンポーネント
_class VisitorShortcut extends Component {
//all the props & lifecycle hooks here
render() {
return (
<div className="visitor-shortcuts"> // <-- this className is being tested
<div
onClick={e => e.stopPropagation()}
className="dropdown open"
>
<ul
style={style}
ref="shortcutContainer"
className={"dropdown-menu "}
>
{results}
</ul>
</div>
</div>
);
}
}
_
//テストファイル
_import React from "react";
import { shallow, mount } from "enzyme";
import VisitorShortcut from "../VisitorShortcut";
describe("Shortcuts", () => {
test("The main Class exists", () => {
expect(
(<VisitorShortcut />).find(".visitor-shortcuts").length
).toBe(1);
});
});
_
//出力
_Expected value to be (using ===):
1
Received:
0
_
enzymeのドキュメントに従ってexpect(wrapper.find('div.some-class')).to.have.length(3);
に切り替えると、出力は_TypeError: Cannot read property 'have' of undefined
_になります。
mount
の代わりにshallow
APIを使用する必要はないと確信しています。
これを明確にするのを手伝ってくれてありがとう。それはとても基本的なようです...
chai
を使用します。動作します。
import React from 'react';
import { shallow } from 'enzyme';
import { expect } from 'chai';
import App from './App';
describe('<App />', () => {
const wrapper = shallow(<App />);
it('should have an App class', () => {
expect(wrapper.find('.App')).to.have.length(1);
});
});
以下のコードは私のために働いた
import React from "react";
import { shallow, mount } from "enzyme";
import { assert } from 'chai';
import VisitorShortcut from "../VisitorShortcut";
describe("Shortcuts", () => {
test("The main Class exists", () => {
const wrapper = shallow(<VisitorShortcut />);
const visitorShortcutsWrapper = wrapper.find('.visitor-shortcuts');
assert.equal(visitorShortcutsWrapper.length, 1);
});
});
ちなみに、私はassert
パッケージのchai
を使用しています。
私の完全なコードベースが持っているnullを返していたものがあったことが判明しました。そのため、node.length = 0です。これを調べていただきありがとうございます。