开玩笑,使用酶的浅层渲染和渲染之间有什么区别?
以下是两个示例:
使用浅浅测试渲染:
import "jest";
import * as React from "react";
import { shallow } from "enzyme";
import Item from "../item.component";
describe("Item", () => {
it("renders correct", () => {
const item = {
name: "A"
};
const component = shallow(
<Item item={item}/>
);
expect(component).toMatchSnapshot();
});
});
使用render测试渲染
import "jest";
import * as React from "react";
import { render } from "enzyme";
import Item from "../item.component";
describe("Item", () => {
it("renders correct", () => {
const item = {
name: "A"
};
const component = render(
<Item item={item}/>
);
expect(component).toMatchSnapshot();
});
});
这2种方法的典型用法是什么。我用浅表编写了所有测试,在某些情况下应该返回并更改以进行渲染吗?
答案 0 :(得分:1)
shallow
和render
特定于酶,可以独立于Jest使用。
shallow
仅呈现顶级组件,不需要DOM。它用于隔离的单元测试。
render
呈现整个组件,并用Cheerio打包,Cheerio是Node.js的jQuery实现。它旨在借助类似jQuery的选择器进行黑盒集成/ e2e测试。它可能有用途,但通常使用shallow
和mount
。
至少在没有其他工具的情况下(toMatchSnapshot
和enzyme-to-json
,shallow
都不应该与mount
一起使用。