如何在Cypress中正确断言动态数组变量与DOM输入值匹配?
Cypress中校验数组格式输入框Value的正确方式
方法一:直接匹配字符串形式的数组
输入框的value属性只能存储字符串,浏览器会自动把HTML中写的数组转为对应字符串格式。你可以将动态变量ids转为相同格式的字符串,直接做全等断言:
// 把数组转为和输入框value一致的字符串 const expectedValue = JSON.stringify(ids); cy.get('input[name="ids"]').should('have.value', expectedValue);
方法二:解析字符串后校验数组内容
如果需要校验数组的具体内容(而非严格匹配字符串格式),可以先把输入框的value解析为数组,再做深度断言:
cy.get('input[name="ids"]').invoke('val').then(inputValue => { // 将输入框的字符串值解析为数组 const parsedIds = JSON.parse(inputValue); // 断言解析后的数组和原ids内容完全一致 expect(parsedIds).to.deep.equal(ids); });
原方法失效原因
输入框的value本质是字符串类型,哪怕HTML里写的是数组,最终也会被转为字符串。Array.isArray(String(ids))必然返回false,因为它判断的是一个字符串是否为数组,逻辑本身不成立,所以无法生效。
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

