You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 23:52:14