两个数组的比较

问题描述 投票:0回答:1

我正在 Cypress 中测试一个场景,但是当我在场景结束时比较两个数组时,代码失败了。 这是我有一个预定义数组的代码,我想创建第二个数组。代码在最后一行失败,说第二个数组是一个对象(我想不知何故我正在将数组与对象进行比较?):

cy.get(desiredCEXs).then( list => { cy.get(expectedCEXnames).should('have.all.members', list)})

我对赛普拉斯非常陌生。所以,我想知道如何修复代码?我想通过使用 .push() ,我正在构建第二个数组。这是我断言代码的链接https://www.coingecko.com/en/coins/kira-network

Then ('I assert what exchnages KIRA Network is listed on', ()=>
{
    const desiredCEXs = [ 'Gate.io', 'AscendEX (BitMax)', 'Uniswap V2 (Ethereum)', 'Gate.io' ]
    const expectedCEXnames = []
    cy.get('tbody').eq(4).find('tr').as('exchanges')
    cy.get('@exchanges').each( eachExchange =>
    {
        var exTypeText = eachExchange.children('td').eq(2).children('span').children('div').text().trim()
        var exName = eachExchange.children('td').eq(1).children('div').children('a').children('div').text().trim()
        if(exTypeText == 'CEX')
        {
            expectedCEXnames.push(exName)
        }
    })
    .then( () =>
    {
        console.log(expectedCEXnames)
    })
    cy.get(desiredCEXs).then( list => { cy.get(expectedCEXnames).should('have.all.members', list)})
})
arrays cypress cypress-cucumber-preprocessor
1个回答
0
投票

具体的操作方式取决于您是否需要排序检查以及存在性检查。

用于检查每个值是否存在(任何顺序)

const desiredCEXs = [ 'Gate.io',...]
cy.get('tbody').eq(4).find('tr').each(eachExchange => {
  const exName = ...
  if(exTypeText == 'CEX') {
    const isInList = desiredCEXs.includes(exName)

    assert(isInList, `${exName} is in the list`)
    // or
    expect(isInList).to.be.ok
    // or
    cy.wrap(exName).should('be.oneOf', desiredCEXs)
  })
})

对于顺序检查以及存在性,请使用

deep.eq
检查两个数组

const desiredCEXs = [ 'Gate.io',...]
const actualCEXs = []
cy.get('tbody').eq(4).find('tr').each(eachExchange => {
  const exName = ...
  if(exTypeText == 'CEX') {
    actualCEXs.push(exName)
  })
})
.then(() => {
  cy.wrap(actualCEXs)).should('deep.eq', desiredCEXs)  // note "deep" for array check
})
© www.soinside.com 2019 - 2024. All rights reserved.