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
}
...
}
上述问题的问题
如果上面的测试由于某种原因失败,则永远不会运行delete global.foo
。这意味着可能随后的所有测试都会失败。与其看到1个测试失败,我看到了一堆测试失败,这可能会让人感到困惑。
潜在(非理想)解决方案
一个解决方案是只需将delete global.foo
添加到我的afterEach
中。它不需要在每个测试后运行,但也不会造成任何损害。另一个解决方案是将特定的测试单独放置,以便afterEach
仅适用于它。但这似乎也不是理想的 - 如果该测试属于其他测试,那么它应该可以保留在其中。
我的问题:
有没有办法仅对特定测试运行拆卸逻辑(而不在实际测试内运行)? 在我的特定用例中,第一种解决方案很好,但我可以想象可能需要更精细的控制的情况。例如,如果我的拆卸方法需要很长时间,我不想重复多次,因为这会减慢整个测试套件的速度。