Kir*_*Lyn 0 typescript cypress
我有一个功能:
let animal: {
animalObj: {
name: string;
randomInfo: string[]
}
} = {
animalObj: {
name: '',
randomInfo: ['']
}
}
cy.request({
method: 'POST',
url: '/api/animal',
body: animal
}).then($el => {
animal.animalObj = $el.body.Order
animal.animalObj.name = 'Rex'
animal.animalObj.randomInfo = ["Likes to bark!"]
})
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我想为最后两行创建一个新的自定义命令:
animal.animalObj.name = 'Rex'
animal.animalObj.randomInfo = ["Likes to bark!"]
Run Code Online (Sandbox Code Playgroud)
它需要一个 string 和 string[] ,同时将这两个值分配给name和randomInfo。这样,我只需要调用该自定义命令并提供 2 个动态值。
后面的自定义命令cy.request()是“子”命令。
它有一个特殊的参数{prevSubject:true}来传递请求响应。
Cypress.Commands.add('setAnimal', {prevSubject:true}, ($response, name, randomInfo) => {
const animal = {}
animal.animalObj = $response.body.Order || {}
animal.animalObj['name'] = name
animal.animalObj['randomInfo'] = randomInfo
return cy.wrap(animal)
})
cy.request({
method: 'POST',
url: '/api/animal',
body: animal
})
.setAnimal('Rex', ["Likes to bark!"]) // response is passed automatically
.as('animal')
// later
cy.get('@animal')
.then(animal => {
expect(animal.animalObj.name).to.eq('Rex')
})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
137 次 |
| 最近记录: |