jest提供afterEach,beforeEach,afterAll和beforeAll要完成安装和拆卸的逻辑。我想做的是在一次特定测试后清理。考虑以下:
describe("a family of tests it makes sense to group together", () => {
...
test("something I want to test", () => {
// some setup needed for just this test
global.foo = "bar"
// the test
expect(myTest()).toBe(true)
// clear up
delete global.foo
}
...
}
Run Code Online (Sandbox Code Playgroud)
如果上述测试由于某种原因失败,则delete global.foo永远不会运行。这意味着它之后的所有测试可能都会失败。我没有看到 1 个测试失败,而是看到大量测试失败,这可能会令人困惑。
一种解决方案是添加delete global.foo到我的afterEach. 不需要在每次测试后都运行它,但它也没有任何危害。另一种解决方案是单独放置特定的测试,以便afterEach仅适用于它。但这似乎也不理想 - 如果该测试属于其他测试,那么它就不可能与它们一起存在。
有没有办法只为特定测试运行拆卸逻辑(而不在实际测试中运行它)。在我的特定用例中,第一个概述的解决方案很好,但我可以想象可能存在需要更细粒度控制的情况。例如,如果我的拆卸方法需要很长时间,我就不想重复很多次,因为这会减慢整个测试套件的速度。