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')
Вышеупомянутая команда отобразится в журнале команд как:
При нажатии на команду 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