首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用jest+Enzyme测试react切换?

如何使用jest+Enzyme测试react切换?
EN

Stack Overflow用户
提问于 2020-07-23 17:51:10
回答 2查看 2.2K关注 0票数 1

嗨,最近我正在用jest+enzyme测试我的react应用程序,用useState或useEffect写测试真的让我很困惑。

所以这是我的代码,我想测试当用户点击按钮时,描述是否显示。(通过更改状态值)

代码语言:javascript
复制
const Job = ({ job }) => {
  const [isOpen, setIsOpen] = useState(false);

  const toggle = (id) => {
    setIsOpen(!isOpen);
  };
  return (
    <Card>
    
        <Card.Text>
          <Button id="button" onClick={toggle} variant="primary">
            {!isOpen ? "View Detail" : "Hide Detail"}
          </Button>
        </Card.Text>
        {isOpen && (
          <div className="mt-4">
            <ReactMardown source={job.description} />
          </div>
        )}
    
    </Card>
  );
};

export default Job;

Job.test.js

代码语言:javascript
复制
import React from "react";

import Adapter from "enzyme-adapter-react-16";
import { mount, shallow, configure } from "enzyme";
import Job from "./Job";
configure({ adapter: new Adapter() });

describe("when user click the button state value should changed", () => {
  const job = jest.fn();

  let wrapper;
  beforeEach(() => {
    wrapper = mount(<Job job={job} />);
  });
  it("should render", () => {
    expect(wrapper).not.toBeNull();
  });

  test("user click button", () => {
    const setIsOpen = jest.fn();
    wrapper.find("#button").at(1).simulate("click");
    expect(setIsOpen).toHaveBeenLastCalledWith({ isOpen: false });
  });
});

但它只通过了第一次测试..

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-24 01:46:34

通常情况下,尤其是在无状态组件中,不是测试实现,而是测试结果。

代码语言:javascript
复制
it('user click button', () => {
    expect(wrapper.find(ReactMardown)).toHaveLength(0);

    wrapper.find('#button').simulate('click');

    expect(wrapper.find(ReactMardown)).toHaveLength(1);
});
票数 0
EN

Stack Overflow用户

发布于 2020-12-26 22:58:05

@nambk我会测试一下样式,例如。某些组件的background-color

代码语言:javascript
复制
expect(component.find('#item-id').prop('style')).toHaveProperty('backgroundColor' 'black');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63051487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档