测试的拆卸
测试拆卸的应用
测试拆卸主要是用于,在测试执行后,清除测试中产生的一些副作用,以确保每个测试的独立性和可复用性。
如何拆卸
利用垃圾回收机制
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
来处理拆卸动作就是隐式拆卸。