【问题标题】:Simulate change does not seem to be tested well模拟变化似乎没有很好地测试
【发布时间】:2021-10-09 04:57:13
【问题描述】:

我有一个简单的反应组件。它有一个input 文本字段。我正在测试它onChange 功能。但它一直在失败。这是我的组件。

import { useState } from "react";

export default function App() {
  const [search, setSearch] = useState("");

  const handleSetSearch = (event) => {
    setSearch(event.target.value);
  };

  return (
    <div className="App">
      <input
        type="text"
        name="search"
        placeholder="Enter search key"
        onChange={handleSetSearch}
      />
    </div>
  );
}

这是测试。

import { shallow } from "enzyme";
import App from "./App";
import Enzyme from "enzyme";
import Adapter from "@wojtekmaj/enzyme-adapter-react-17";

Enzyme.configure({ adapter: new Adapter() });

describe("<App />", () => {
  const Wrapper = shallow(<App />);

  it("should call onChange function", () => {
    const input = Wrapper.find("input");
    expect(Wrapper.find('input').value).toEqual(undefined);
    Wrapper.find("input").simulate("change", {
      target: {
        name: "search",
        value: "Test"
      }
    });
    expect(Wrapper.find("input").value).toEqual("Test");
  });
});

此测试返回以下错误。

Expected: "Test"
Received: undefined

      23 |      });
      24 |      console.log(Wrapper.find('input').prop('value'));
    > 25 |      expect(Wrapper.find('input').value).toEqual('Test');

知道我做错了什么以及如何解决吗?

这里是沙盒链接。 https://codesandbox.io/s/stupefied-river-d0mj7?file=/src/App.test.js

【问题讨论】:

  • 沙箱(可能是您的本地 IDE)向您显示的一件事是 search 状态值当前 未使用...我还要注意 @987654328 @ 描述实现,而不是行为

标签: reactjs unit-testing testing jestjs enzyme


【解决方案1】:

你需要使用 .prop()

it("should call onChange function", () => {
  const input = Wrapper.find("input");
  expect(input.value).toEqual(undefined);
  Wrapper.find("input").simulate('change', { target: { value: 'Test1' } })
  expect(Wrapper.find("input").prop('value')).toEqual("Test1");
});

【讨论】:

猜你喜欢
  • 2016-06-26
  • 1970-01-01
  • 2015-01-17
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2012-12-19
相关资源
最近更新 更多