javascript - Cypress 对象 vs JQuery 对象,cy.wrap 函数的作用
问题描述
我是柏树的新手,通过测试不同的方法来学习它。如果有人可以帮助我解决以下问题
1.我了解到大多数 cypress 对象都使用 DOM 的 jquery 对象,但它们之间到底有什么区别,在性能上会有什么区别?2.我使用了cy.wrap函数,所以我可以使用should方法进行断言,否则我必须使用expect方法,有什么线索什么时候使用哪一个??因为使用 then() 函数我不能使用 should 方法
对于 cy.wrap ,根据 cypress 文档,定义是“在 wrap 中调用主题上的函数并返回新值”, cy.wrap 的作用到底是什么?
在下面的示例代码中,我同时使用了 should() 和 expect() 进行断言
提前致谢。
cy.contains('nb-card','Using the Grid').then(firstForm =>{
const emailLabelFirst = firstForm.find('[for="inputEmail1"]').text()
const passwordLabelFirst = firstForm.find('[for="inputPassword2"]').text()
// jquery object assertion is done cia expect method
expect(emailLabelFirst).to.equals('Email')
expect(passwordLabelFirst).to.equals('Password')
cy.contains('nb-card','Basic form').then(secondForm=>{
const passwordLabelSecond = secondForm.find('[for="exampleInputPassword1"]').text()
expect(passwordLabelFirst).to.equal(passwordLabelSecond)
// cy.log('This is test logging message')
// with cypress object assertion is done via should method
cy.wrap(secondForm).find('[for="exampleInputPassword1"]').should('contain','Password')
})
})
解决方案
你问了很多问题,我什至不知道我是否都理解得很好,但让我们看看一些答案。
.should() 与 .expect()
.should()
被认为是隐式断言和.expect()
显式断言。这里有更详细的解释。.should()
很棒,因为它等待并重试,这是您无法实现的.expect()
,也无法使用.then()
.
通常,.expect()
当您想对同一主题执行多个断言时使用。就像您想断言响应状态代码是 200 并且响应正文中有一些特定属性:
cy
.request(url)
.then(res => {
expect(res.statusCode).to.equal(200);
expect(response.body).to.have.property('name', 'pavel');
});
cy.wrap()
cy.wrap()
确实允许您继续链接赛普拉斯命令,就像您使用.find()
. 文档中有示例,请查看。
推荐阅读
- python - Python - datetime.time() 比较将 AttributeError 作为“str”对象返回
- reactjs - 如何使用 Recoil 在 React 组件之外操作全局状态?
- python - 获取 xgboost 线性模型的系数
- r - 如何融化具有多个组和空后缀的data.frame
- angular - Angular - 如何在按钮中添加金额?
- javascript - 如何根据参数插入键并在对象 es6 中更新其值
- html - 为什么会出现我网站上的图像和文字?
- powershell - 使用 Powershell 在现有节之间添加新节
- python - 计算长度为 n 的两位数字的可能组合数
- assembly - ARM中的指令写回