我是 cypress 的新手,我想知道如何进行以下检查:
我有一个案例:
我在数据库中有一个产品,其状态可以是:InStock、OutOfStock 和 Discontinued。如果产品处于“InStock”状态,我应该能够将其发送给客户,如果处于“OutOfStock”/“Discontinued”状态,我应该无法将其发送给客户。
通过 API 调用,我可以将产品发送给客户。如果产品处于“InStock”状态,则 API 响应为 200,否则响应的 statusCode 为 400。
所以我的问题是:如何更改每个测试的数据库中产品的状态,以便我可以检查 3 个状态中的每一个(如果 API 返回正确的响应)?我知道如何检查 API 响应本身,但我不清楚如何在每次测试之前更改数据库中产品的状态。
与@Maccurt不同,我would实际上按照您建议的方式进行(更改数据库),这样您就可以正确测试 e2e 流程。
您可以使用而不是设置写入数据库的测试路由cy.task https://docs.cypress.io/api/commands/task.html#Syntax与 Cypress Runner 的节点进程对话,该进程可以直接写入数据库。它看起来像这样:
使用 postgres (节点 postgres https://github.com/brianc/node-postgres)在此示例中。
your-test.spec.js
describe("test", () => {
it("test", () => {
cy.task("query", {
sql: `
UPDATE product
SET status = $1
WHERE id = $2
`,
values: [ "InStock", 40 ]
});
// your cy assertions here
});
});
cypress/plugins/index.js
const pg = require("pg");
const pool = /* initialize your database connection */;
module.exports = (on) => {
on("task", {
query ({ sql, values }) {
return pool.query(sql, values);
}
});
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)