繁体   English   中英

在 JavaScript 中的每个循环中,如何通过索引获取地图值?

[英]How to get map values by index when inside each loop in JavaScript?

我尝试以干净的方式编写测试。 我遍历页面上表的行(每行都显示有关附件的信息)并验证每个附件的大小是否正确:

   it('attaches many documents', () => {
     const fileSizes = ['17.19 KB', '12.06 KB', '67.75 KB']
     cy.get('input[type="file"]').attachFile([excelFilePath, docxFilePath, pdfFilePath])

   
     cy.get('div.table-body>.table-row').each(($el, index) => {
       expect($el.find('.col-upload-size')).to.contain.text(fileSizes[index])
     })
        
   })

但在代码的前面我定义了这张地图:

const fileSizesMap = new Map([
    ["excelFileSize", "17.19 KB"],
    ["docxFileSize", "12.06 KB"],
    ["pdfFileSize", "67.75 KB"]
]);

我可以以某种方式摆脱测试中的fileSizes列表并改用fileSizesMap吗?

我知道您想用fileSizes中的值替换fileSizesMap

const fileSizes = Array.from(fileSizesMap.values())

您可以尝试为值返回一个可迭代对象并进行断言:

const fileSizesMap = new Map([
    ["excelFileSize", "17.19 KB"],
    ["docxFileSize", "12.06 KB"],
    ["pdfFileSize", "67.75 KB"]
]);

it('attaches many documents', () => {
    cy.get('input[type="file"]').attachFile([excelFilePath, docxFilePath, pdfFilePath])
    for (const value of fileSizesMap.values()) {
        cy.get('div.table-body>.table-row').then(() => {
            expect($el.find('.col-upload-size')).to.contain.text(value)
        })
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM