5

从这个文档:https ://reactjs.org/docs/hooks-faq.html#how-to-test-components-that-use-hooks

文档提供了一种设置和拆除测试的方法,如下所示:

let container;

beforeEach(() => {
  container = document.createElement('div');
  document.body.appendChild(container);
});

afterEach(() => {
  document.body.removeChild(container);
  container = null;
});

从这个文档:https ://reactjs.org/docs/testing-recipes.html#setup--teardown

设置和拆卸方式如下:

import { unmountComponentAtNode } from "react-dom";

let container = null;
beforeEach(() => {
  // setup a DOM element as a render target
  container = document.createElement("div");
  document.body.appendChild(container);
});

afterEach(() => {
  // cleanup on exiting
  unmountComponentAtNode(container);
  container.remove();
  container = null;
});

我有点困惑哪一个是拆解测试的最佳方法?

unmountComponentAtNode+dom.remove()document.body.removeChild?

更新

这两个官方文档在拆机测试时给出了这两种方式,是否意味着它们都可以?它们是等价的吗?或者是什么?

4

1 回答 1

0

unmountComponentAtNode将调用componentWillUnmount生命周期方法,但document.body.removeChild不会。

于 2019-10-31T06:44:22.543 回答