带有 className 的 React Enzyme Jest 测试组件
2018-03-21
50634
我
按照 Enzyme 中
.find()
的示例和 GitHub 上的
enzyme-example-jest
示例获取一个基本组件来测试并验证最外层元素
className
是否存在,我不明白为什么这没有通过:
// REACT COMPONENT
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>
);
}
}
// TEST FILE
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);
});
});
// OUTPUT
Expected value to be (using ===):
1
Received:
0
如果我切换到
expect(wrapper.find('div.some-class')).to.have.length(3);
根据 Enzyme 文档,输出为
TypeError: Cannot read property 'have' of undefined
我很确定我不需要使用
mount
API 而不是
shallow
感谢您帮助澄清这一点。这看起来很基础...
3个回答
以下代码对我有用
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);
});
});
顺便说一下,我正在使用
chai
包中的
assert
。
Chirag Swadia
2018-03-21
根据 Enzyme 文档,您可以执行以下操作:
const wrapper = shallow(<VisitorShortcut />);
expect(wrapper.find("div.visitor-shortcuts").length).toBe(1)
Pramod
2020-11-28
我使用
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);
});
});
mfakhrusy
2018-03-25