我刚刚在cypress上创建了一个测试文件(MERN堆栈),运行完测试后,我想从Mongoose数据库中删除它。有没有什么方法可以在测试成功运行后立即删除该数据?我不想手动删除。
yftpprvb1#
Cypress建议不要使用after()或afterEach()进行清理,而是在播种或测试之前使用before()或beforeEach()清理DB请参阅Cypress最佳做法。最佳实践:运行测试 * 之前 * 清除状态。原因是,如果发生崩溃或编程测试重试,after*挂钩可能不会运行。这样做before*意味着测试总是看到正确的DB状态。
after()
afterEach()
before()
beforeEach()
after*
before*
gtlvzcf82#
我使用的一种方法是创建一个包含所有清理脚本的单独的spec文件(例如,cleanup.spec.js),并确保在测试结束时运行该文件。为了确保这一点,您可以在cypress.json中使用testFiles选项。这样做的目的是按照您提到的顺序加载测试。
cypress.json
testFiles
"testFiles": [ "Some Test 1.spec.js", "Some Test 2.spec.js", "Some Test 3.spec.js", "cleanup.spec.js" ]
使用afterEach()删除测试数据在过去总是会给我带来一些问题,原因如@Mihi所述
ajsxfq5m3#
根据需要,您可以执行以下操作之一:1.使用afterEach删除记录
afterEach
describe('Example', () => { afterEach(() => { // delete the record }) // Include tests here })
1.使用此处定义的after:run挂接:https://docs.cypress.io/api/plugins/after-run-api
after:run
3条答案
按热度按时间yftpprvb1#
Cypress建议不要使用
after()
或afterEach()
进行清理,而是在播种或测试之前使用before()
或beforeEach()
清理DB请参阅Cypress最佳做法。
最佳实践:运行测试 * 之前 * 清除状态。
原因是,如果发生崩溃或编程测试重试,
after*
挂钩可能不会运行。这样做
before*
意味着测试总是看到正确的DB状态。gtlvzcf82#
我使用的一种方法是创建一个包含所有清理脚本的单独的spec文件(例如,cleanup.spec.js),并确保在测试结束时运行该文件。为了确保这一点,您可以在
cypress.json
中使用testFiles
选项。这样做的目的是按照您提到的顺序加载测试。使用
afterEach()
删除测试数据在过去总是会给我带来一些问题,原因如@Mihi所述ajsxfq5m3#
根据需要,您可以执行以下操作之一:
1.使用
afterEach
删除记录1.使用此处定义的
after:run
挂接:https://docs.cypress.io/api/plugins/after-run-api