#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]