Skip to main content

测试的拆卸

测试拆卸的应用

测试拆卸主要是用于,在测试执行后,清除测试中产生的一些副作用,以确保每个测试的独立性和可复用性。

如何拆卸

利用垃圾回收机制

test("", () => {
const dog = new Dog("bark");
expect(dog.sayHi()).toBe("bark");
});

dog 变量是在 test 回调函数作用域范围内定义的,当这个作用域内的代码被执行完,dog 变量也就被 JavaScript 当成垃圾自动回收了。

永久数据

永久数据(指数据库数据,全局变量,localStorage 和文件等)需要手动拆卸。

手动拆卸则可以分为内联拆卸隐式拆卸两种。

使用 try ... finally ...

如果测试在执行到拆卸阶段前就报错了,那已经被更改了的永久数据怎么办呢?

这个时候就可以使用 try ... finally ... 来来保证数据一定会被拆卸。

test("", () => {
try {
const expectedData = "something";
const data = doSomething();
expect(data).toBe(expectedData);
} finally {
reset();
}
});

这样不管拆卸阶段前是否抛出错误,最终都需要去执行拆卸动作。

使用 afterEach

使用 try ... finally ... 非常地麻烦,如果多个测试 case 都需要相同的拆卸动作,就可以使用 afterEach 来处理。

使用 afterEach 来处理拆卸动作就是隐式拆卸。