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

Cypress中如何实现类似Jest的toHaveBeenCalledWith断言?

在Cypress中验证Spy的调用参数

你当前代码里用have.value是错误的,Cypress里对应JesttoHaveBeenCalledWith的等价写法是have.been.calledWith,用这个断言就能直接验证console.log被调用时传入的具体值。

修正后的代码示例:

// 监听window对象的console.log,创建spy并设置别名
cy.window().then((win) => {
  cy.spy(win.console, 'log').as('myLog')
})

// 先执行会触发console.log('clicked')的操作,比如点击目标按钮
cy.get('#trigger-button').click() // 替换成你实际的触发操作

// 验证spy的调用状态和传入参数
cy.get('@myLog')
  .should('be.called')
  .and('have.been.calledWith', 'clicked')

额外补充几个常用验证场景:

  • 若要验证参数符合某一模式,使用calledWithMatch,比如匹配包含指定字符串的参数:
    cy.get('@myLog').should('have.been.calledWithMatch', /click/)
    
  • 若要验证多次调用中某一次的参数,直接访问spy的calls属性:
    // 验证第二次调用的参数数组
    cy.get('@myLog').its('calls[1].args').should('deep.equal', ['second message'])
    

内容的提问来源于stack exchange,提问作者me-me

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 08:01:02