Cypress中如何用正则断言存根函数的参数?
解决方法
你可以通过在calledWithMatch中传入匹配对象结构的参数,结合Cypress.sinon.match的正则来精准断言segmentB的格式。具体写法如下:
cy.get('@myMethodStub') // 替换成你实际的存根别名 .should('be.calledWithMatch', 'start', { segmentB: Cypress.sinon.match(/^MPI_/) } )
失效原因说明
如果之前直接把正则作为第二个参数传入,calledWithMatch会尝试用正则匹配整个第二个参数(即包含5个键的对象),而非对象内部的segmentB属性,导致断言失败。必须明确指定对象的属性结构,让Sinon定位到要校验的目标字段。
可选替代方案
如果需要更灵活的参数校验,也可以取出存根的调用参数后单独断言:
cy.get('@myMethodStub').then(stub => { const targetObj = stub.getCall(0).args[1] // 获取首次调用的第二个参数 expect(targetObj.segmentB).to.match(/^MPI_/) })
这种方式更直观,适合需要对参数做多项校验的场景。
内容的提问来源于stack exchange,提问作者Shushiro
相关产品推荐
相关产品推荐

