赛普拉斯从 json 加载数据 - 之前的夹具
Cypress load data from json - fixture before
我正在尝试通过 Cypress 中的固定装置从 json 文件中检索一些数据,但根本无法识别数据。
before(() => {
cy.fixture('example').then(function (data) {
console.log("this", data.user);
})
})
控制台输出用户,这是有效的。
但在那之后我有一个步骤:
Given("I check data", () => {
console.log("this", this.data.user);
});
这里的数据是未定义的。
我试过在里面设置 before
也:
this.data = data
但没有帮助。我也尝试使用 beforeEach
但没有成功。
不是 cucumber 用户,但在普通的 Cypress 测试中,您只能通过将回调设为函数而不是箭头函数来访问 this
Given("I check data", function() {
console.log("this", this.data.user);
});
我认为您可能还需要为数据添加别名
before(() => {
cy.fixture('example')
.then(function (data) {
console.log("this", data.user)
})
.as('data');
}
请注意,赛普拉斯会在测试之间清除别名,因此您需要使用 beforeEach()
而不是 before()
。
中所述
If you store and access the fixture data using this test context
object, make sure to use function () { ... } callbacks. Otherwise the
test engine will NOT have this pointing at the test context.
将箭头函数更改为 function 应该可行:
Given("I check data", function() {
console.log("this", this.example.user);
});
你的beforeEach()
块:
beforeEach(function () {
cy.fixture('example').then(function (example) {
this. example = example
})
})
我正在尝试通过 Cypress 中的固定装置从 json 文件中检索一些数据,但根本无法识别数据。
before(() => {
cy.fixture('example').then(function (data) {
console.log("this", data.user);
})
})
控制台输出用户,这是有效的。
但在那之后我有一个步骤:
Given("I check data", () => {
console.log("this", this.data.user);
});
这里的数据是未定义的。
我试过在里面设置 before
也:
this.data = data
但没有帮助。我也尝试使用 beforeEach
但没有成功。
不是 cucumber 用户,但在普通的 Cypress 测试中,您只能通过将回调设为函数而不是箭头函数来访问 this
Given("I check data", function() {
console.log("this", this.data.user);
});
我认为您可能还需要为数据添加别名
before(() => {
cy.fixture('example')
.then(function (data) {
console.log("this", data.user)
})
.as('data');
}
请注意,赛普拉斯会在测试之间清除别名,因此您需要使用 beforeEach()
而不是 before()
。
If you store and access the fixture data using this test context object, make sure to use function () { ... } callbacks. Otherwise the test engine will NOT have this pointing at the test context.
将箭头函数更改为 function 应该可行:
Given("I check data", function() {
console.log("this", this.example.user);
});
你的beforeEach()
块:
beforeEach(function () {
cy.fixture('example').then(function (example) {
this. example = example
})
})