reactjs Cypress在测试后删除测试数据

kpbwa7wx  于 2023-03-17  发布在  React
关注(0)|答案(3)|浏览(172)

我刚刚在cypress上创建了一个测试文件(MERN堆栈),运行完测试后,我想从Mongoose数据库中删除它。有没有什么方法可以在测试成功运行后立即删除该数据?我不想手动删除。

yftpprvb

yftpprvb1#

Cypress建议不要使用after()afterEach()进行清理,而是在播种或测试之前使用before()beforeEach()清理DB
请参阅Cypress最佳做法。
最佳实践:运行测试 * 之前 * 清除状态。
原因是,如果发生崩溃或编程测试重试,after*挂钩可能不会运行。
这样做before*意味着测试总是看到正确的DB状态。

gtlvzcf8

gtlvzcf82#

我使用的一种方法是创建一个包含所有清理脚本的单独的spec文件(例如,cleanup.spec.js),并确保在测试结束时运行该文件。为了确保这一点,您可以在cypress.json中使用testFiles选项。这样做的目的是按照您提到的顺序加载测试。

"testFiles": [
    "Some Test 1.spec.js",
    "Some Test 2.spec.js",
    "Some Test 3.spec.js",
    "cleanup.spec.js"
  ]

使用afterEach()删除测试数据在过去总是会给我带来一些问题,原因如@Mihi所述

ajsxfq5m

ajsxfq5m3#

根据需要,您可以执行以下操作之一:
1.使用afterEach删除记录

describe('Example', () => {
  afterEach(() => {
    // delete the record
  })

  // Include tests here
})

1.使用此处定义的after:run挂接:https://docs.cypress.io/api/plugins/after-run-api

相关问题