Cypress-сравнение содержимого файла с массивом всегда возвращает false - PullRequest
0 голосов
/ 25 февраля 2019

Я новичок в java-скрипте и кипарисе.Я читаю содержимое из файла с помощью команды cy.readFile и сравниваю его с другим массивом (который содержит значения времени выполнения).Мое намерение состоит в том, чтобы сравнить значения в базовом файле и значениях времени выполнения. Я пытался использовать приведенное ниже утверждение, но оно не удалось.

cy.readFile('Latest.txt').should('eq',tableValues1); 

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

Actual: [
"Gender",
"Age group ",
"Source Total ",
"21 to 30 ",
"30 to 35 ",
"36 to 40 ",
"41 to 45 ",
"46 to 50 ",
"51 to 55 ",
"56 to 60 ",
"61 to 65 ",
"Over 66 ",
"123",
 "%",
"%",
"%",
"%",
"%",
"%",
"%",
"%",
"%"
]

  cypress_runner.js:163813 
Expected:  (22) ["Gender", "Age group ", "Source Total ", "21 to 30 ", "30 to 35 ", "36 to 40 ", "41 to 45 ", "46 to 50 ", "51 to 55 ", "56 to 60 ", "61 to 65 ", "Over 66 ", "123", "%", "%", "%", "%", "%", "%", "%", "%", "%"]

Я также попытался сравнить как

tableValues1==cy.readFile('Latest.txt');

, это также возвращает false

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

1) eq проверяет ссылки на объекты.Вы хотите, чтобы deep.eq утверждал, что содержимое объекта / массива равно.

2), как указано ниже в NoriSte, вам необходимо проанализировать .txt в javascript объекте:

cy.readFile('example.txt')
  .then(text => JSON.parse(text))
  .should('deep.eq', tableValues1)

или пусть Cypress сделает это за вас (переименуйте файл в .json):

cy.readFile('example.json')
  .should('deep.eq', tableValues1)
0 голосов
/ 25 февраля 2019

Я сделал тест локально и:

  • переименуем ваш Latest.txt файл в Latest.json, чтобы мы могли использовать функцию Cypress , которая автоматически анализирует файл
  • содержимое файла должно быть
[
 "Gender",
 "Age group ",
 "Source Total ",
 "21 to 30 ",
 "30 to 35 ",
 "36 to 40 ",
 "41 to 45 ",
 "46 to 50 ",
 "51 to 55 ",
 "56 to 60 ",
 "61 to 65 ",
 "Over 66 ",
 "123",
 "%",
 "%",
 "%",
 "%",
 "%",
 "%",
 "%",
 "%",
 "%"
]

, которое является допустимым файлом JSON (вы можете проверить его, вставив его в валидатор )

сейчасчто мы уверены, что нет никаких проблем с декодированием и т. д. (поскольку Cypress автоматически преобразует файл JSON в объект JavaScript), мы можем сравнить их.

В любом случае: Cypress все равно скажет вам, что они не 'Это не так уж важно, но другие библиотеки тестирования (Jest и т. д.) иногда не в состоянии сравнивать, как ваша.Все, что вам нужно сделать, это преобразовать оба объекта в базовую строку JSON и сравнить их.

Попробуйте

cy.readFile('example.json').then(json => JSON.stringify(json)).should('eq',JSON.stringify(tableValues1));

, где

cy.readFile('example.json') // reads the file as expected
.then(json => JSON.stringify(json)) // once read, it converts the file into a JSON string
.should('eq', JSON.stringify(tableValues1)); // and compare it to the stringified version of your array

Это работает дляменя локально, и вы можете найти его работающим на моем репозитории GitHub , дайте мне знать, если вам нужно что-то еще ?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...