Вам не нужны псевдонимы. Ваш код верен, но вы не можете использовать this
внутри () => {}
. Вы должны использовать объявление function
, чтобы использовать this
.
Попробуйте вместо этого:
cy.exec('some command').then(function(result) {
let json = JSON.parse(result.stdout)
this.foo = json.foo
})
Обратите внимание, что Cypress является асинхронным. Это означает, что если вы делаете что-то вроде этого:
cy.exec('some command').then(function(result) {
let json = JSON.parse(result.stdout)
this.foo = json.foo
})
expect(this.foo).to.eq(expectedStdout)
... ваш тест всегда будет неудачным. this.foo = json.foo
будет выполнено после оценки expect(this.foo)...
.
Если вы хотите использовать this.foo
таким образом, просто используйте Обещание, возвращенное cy.exec()
:
cy.exec('some command').then(result => {
return JSON.parse(result.stdout)
})
.then(json => {
// write the rest of your test here
cy.get('blah').contains(json.something)
})