Cypress能否拦截对象赋值属性以进行断言检测?
用Cypress测试全局对象的属性变化
当然可以编写Cypress测试用例来验证这个全局对象的属性变化,以下是具体实现方案:
测试逻辑说明
我们需要分两步验证:
- 页面加载完成后,
FindThisProp初始为空对象,不存在prop属性 - 点击按钮后,
FindThisProp新增prop: 'Found'的键值对
完整测试代码
describe('全局对象属性变化测试', () => { it('验证FindThisProp的初始状态与点击后的更新', () => { // 访问目标页面,替换为实际页面路径/URL cy.visit('/your-page-path'); // 验证初始状态:对象为空,无prop属性 cy.window().then(win => { expect(win.FindThisProp).to.deep.equal({}); expect(win.FindThisProp).to.not.have.property('prop'); }); // 触发按钮点击事件 cy.get('button').click(); // 验证点击后的对象状态 cy.window().then(win => { // 检查特定属性及对应值 expect(win.FindThisProp).to.have.property('prop', 'Found'); // 也可以直接验证整个对象的结构 expect(win.FindThisProp).to.deep.equal({ prop: 'Found' }); }); }); });
关键要点解释
cy.window():获取当前页面的全局window对象,因为你的FindThisProp定义在全局作用域下,所以可以通过win.FindThisProp访问到它- 断言方法:
deep.equal:用于对比复杂对象的完整结构,确保对象内容完全匹配have.property:精准检查对象是否包含指定属性,并验证其对应值
内容的提问来源于stack exchange,提问作者Maxwell
相关产品推荐
相关产品推荐

