Spec-Zone.ru › Cypress

readFile

Чтение файла и вывод его содержимого.

Синтаксис

cy.readFile(filePath)
cy.readFile(filePath, encoding)
cy.readFile(filePath, options)
cy.readFile(filePath, encoding, options)

Использование

Правильное использование

cy.readFile('menu.json')

Аргументы

filePath (Строка)

Путь к файлу в корне проекта (каталог, содержащий файл конфигурации по умолчанию cypress.json).

encoding (Строка)

Кодировка, используемая при чтении файла. Поддерживаются следующие кодировки:

  • 'ascii'
  • 'base64'
  • 'binary'
  • 'hex'
  • 'latin1'
  • 'utf8'
  • 'utf-8'
  • 'ucs2'
  • 'ucs-2'
  • 'utf16le'
  • 'utf-16le'
  • null

Использование null явно вернёт файл в виде экземпляра Cypress.Buffer, независимо от расширения файла.

options (Объект)

Передайте объект options, чтобы изменить стандартное поведение cy.readFile().

Опция Значение по умолчанию Описание
log true Отображает команду в Журнале команд
timeout defaultCommandTimeout Время ожидания cy.readFile() для разрешения перед выходом по таймауту

Возвращаемое значение

  • cy.readFile() возвращает содержимое файла.

Примеры

Текст

Чтение файла .txt

Для файлов, отличных от JSON, возвращается содержимое файла.

// path/to/message.txt

Hello World
cy.readFile('path/to/message.txt').should('eq', 'Hello World') // true

JSON

Для JSON содержимое преобразуется в JavaScript и возвращается.

// data.json

{
  "name": "Eliza",
  "email": "eliza@example.com"
}
cy.readFile('path/to/data.json').its('name').should('eq', 'Eliza') // true

YAML

Получение данных перевода из файла YAML

const YAML = require('yamljs')

cy.readFile('languages/en.yml').then((str) => {
  // parse the string into object literal
  const english = YAML.parse(str)

  cy.get('#sidebar')
    .find('.sidebar-title')
    .each(($el, i) => {
      englishTitle = english.sidebar[i]

      expect($el.text()).to.eq(englishTitle)
    })
})

Кодировка

Указание кодировки со вторым аргументом

cy.readFile('path/to/logo.png', 'base64').then((logo) => {
  // logo will be encoded as base64
  // and should look something like this:
  // aIJKnwxydrB10NVWqhlmmC+ZiWs7otHotSAAAOw==...
})

Чтение

cy.fixture('path/to/logo.png', null).then((logo) => {
  // logo will be read as a buffer
  // and should look something like this:
  // Buffer([0, 0, ...])
})

Проигрывание файла MP3

cy.readFile('audio/sound.mp3', 'base64').then((mp3) => {
  const uri = 'data:audio/mp3;base64,' + mp3
  const audio = new Audio(uri)

  audio.play()
})

Примечания

Существование

Стандартное утверждение о существовании файла

По умолчанию cy.readFile() утверждает, что файл существует, и завершается ошибкой, если он не существует. Он будет повторно пытаться прочитать файл, если он не существует изначально, до тех пор, пока файл не будет существовать или не истечёт время ожидания команды.

// will fail after the defaultCommandTimeout is reached
cy.readFile('does-not-exist.yaml')

Утверждение об отсутствии файла

Вы можете утверждать, что файла не существует следующим образом:

// will pass if the file does not exist
cy.readFile('does-not-exist.yaml').should('not.exist')

Чтение файла, который может не существовать

См. наш пример использования cy.task() для чтения файла, который может не существовать.

Повторные попытки

Автоматические повторные попытки

cy.readFile() будет продолжать чтение файла до тех пор, пока не пройдут все утверждения.

// if this assertion fails cy.readFile will poll the file
// until it eventually passes its assertions (or times out)
cy.readFile('some/nested/path/story.txt').should('eq', 'Once upon a time...')

Правила

Требования

  • cy.readFile() требует цепочки с cy.
  • cy.readFile() требует существования файла.
  • cy.readFile() требует успешного чтения файла из диска.

Утверждения

  • cy.readFile() будет автоматически повторно пытаться до тех пор, пока все связанные утверждения не пройдут.

Таймауты

  • cy.readFile() может выйти по таймауту, ожидая прохождения добавленных утверждений.
  • cy.readFile() может выйти по таймауту, когда кодирование содержимого, которое читается, занимает значительное время.

Журнал команд

Список содержимого файла конфигурации по умолчанию cypress.json

cy.readFile('cypress.json')

Вышеупомянутая команда отобразится в журнале команд как:

Command Log readFile

При нажатии на команду readFile в журнале команд консоль выведет следующее:

Console Log readFile

История

Версия Изменения
9.0.0 Изменена кодировка null для чтения как буфер
0.17.2 Улучшены сообщения об ошибках
0.17.1 Добавлена команда cy.readFile()

См. также

  • cy.exec()
  • cy.fixture() для аналогичной команды с кэшированием
  • cy.task()
  • cy.writeFile()

© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/readfile

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API