use*_*982 7 javascript cypress
我在 cypress 中有一个固定文件,其中包含 json 数据
我希望在运行测试脚本时能够更新此固定文件中的字段
例如,固定装置文件将读取
{
table: [
{
name: 'Joe',
number: 1,
},
{
name: 'Bob',
number: 2,
},
],
};
Run Code Online (Sandbox Code Playgroud)
我想将数字字段更新为 3 和 4
我努力了
cy.fixture('dataFile.json')
.as('data')
.then((data) => {
data.table[0].number = 3;
data.table[1].number = 4;
});
Run Code Online (Sandbox Code Playgroud)
但当我运行测试时它不起作用,我仍然看到所有内容的行为都好像数字字段仍然是 1 和 2。如果我将字段打印到控制台,我可以看到它们实际上已更新,但 cypress 仍在使用原始版本运行数据
我对 cypress 和 javascript 仍然很陌生。我该如何解决这个问题?
小智 10
可以在规范文件的顶部读取夹具,并针对规范中的所有测试进行修改。
这样您就可以避免在其他规格中使用灯具时出现意外问题
const data = require('cypress/fixtures/dataFile.json')
data.table[0].number = 3
data.table[1].number = 4
it('tests with altered fixture', () => {
...
})
Run Code Online (Sandbox Code Playgroud)
您必须同时使用cy.readFile()和cy.writeFile()来实现此目的。你可以这样写:
cy.readFile("cypress/fixtures/dataFile.json", (err, data) => {
if (err) {
return console.error(err);
};
}).then((data) => {
data.table[0].number = 3
data.table[1].number = 4
cy.writeFile("cypress/fixtures/dataFile.json", JSON.stringify(data))
})
Run Code Online (Sandbox Code Playgroud)
使用前修改夹具数据。
cy.fixture('user').then((user) => {
user.firstName = 'Jane'
cy.intercept('GET', '/users/1', user).as('getUser')
})
cy.visit('/users')
cy.wait('@getUser').then(({ request }) => {
expect(request.body.firstName).to.eq('Jane')
})
Run Code Online (Sandbox Code Playgroud)
来自: https: //docs.cypress.io/api/commands/fixture#Modifying-fixture-data-before-using-it
| 归档时间: |
|
| 查看次数: |
9710 次 |
| 最近记录: |