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
相关产品推荐
相关产品推荐

