должно.иметь.свойство для проверки пары ключ-значение из объекта

#javascript #jquery #typescript #cypress #should.js

Вопрос:

Я хотел бы проверить, существует ли пара ключ-значение на объекте. Я использую «должен».js с синтаксисом: cy.gey(selector).should('have.property', 'Compasny Feature: ', ['open space ']); но я получаю эту ошибку Error: AssertionError: expected { Object (Company Feature: , Name: ) } to have property 'Company Feature: ' of [ 'open space ' ], but got [ 'open space ' ] , я совершенно не знаю, какая часть значения не соответствует. или это просто ошибка из should.js?

 // debug output
{
    "Company Feature: ": [
        "open space "
    ],
    "Name: ": [
        "John, Amazon "
    ]
}
// test.ts
cy.gey(selector).should('have.property', 'Compasny Feature: ', ['open space ']);



// html
<div class="container">
    <span>
        <span class="title">Company Feature: </span>
        <span class="text">open space </span>
    </span>
    <span>
        <span class="title">Name: </span>
        <span class="text">John, Amazon </span>
    </span>
</div>
 

Ответ №1:

Проблема просто в том, что вы ссылаетесь на разные экземпляры массива. Вы можете исправить это, сославшись на один и тот же экземпляр массива следующим образом:

 const testFeature = [
        "open space "
    ];
const TestData = {
    "Company Feature: ": testFeature,
    "Name: ": [
        "John, Amazon "
    ]
}
// test.ts
cy.gey(selector).should('have.property', 'Company Feature: ', testFeature);
 

В качестве альтернативы вы можете использовать .deep в цепочке и сверить ее со структурой см. Документы: https://www.chaijs.com/api/bdd/#method_property

 // test.ts
cy.gey(selector).should('have.deep.property', 'Company Feature: ', testFeature);
 

Комментарии:

1. Хм…не совсем понимаю, что это значит, но, очевидно, ваше решение работает

2. Какая часть этого вас смущает?

3. я не совсем уверен, почему это «ссылки на различные экземпляры массива» я, хотя я просто сравниваю a с b, но, думаю, я вижу это сейчас, это просто [1234] !== [1234]