writeFile
Запись в файл указанного содержимого.
Синтаксис
cy.writeFile(filePath, contents)
cy.writeFile(filePath, contents, encoding)
cy.writeFile(filePath, contents, options)
cy.writeFile(filePath, contents, encoding, options)
Использование
Правильное использование
cy.writeFile('menu.json')
Аргументы
filePath (Строка)
Путь к файлу в корне проекта (каталог, содержащий стандартный cypress.json).
contents (Строка, Массив, Объект или Буфер)
Содержимое, подлежащее записи в файл.
encoding (Строка)
Кодировка, используемая при записи в файл. Поддерживаются следующие кодировки:
'ascii''base64''binary''hex''latin1''utf8''utf-8''ucs2''ucs-2''utf16le''utf-16le'null
Использование null явно позволяет вам записать Buffer непосредственно, без предварительного кодирования в строку.
options (Объект)
Передайте объект options, чтобы изменить стандартное поведение cy.writeFile().
| Опция | Значение по умолчанию | Описание |
|---|---|---|
log |
true |
Отображает команду в Журнале команд |
flag |
w |
Флаг файловой системы, используемый с fs.writeFile
|
encoding |
utf8 |
Кодировка, используемая при записи в файл |
timeout |
defaultCommandTimeout |
Время ожидания .writeFile() для разрешения перед выходом за пределы таймаута
|
Для использования кодировки с другими опциями, сделайте объект options вашим третьим параметром и включите кодировку в него. Это поведение такое же, как у
fs.writeFile.
Возвращаемые значения
-
cy.writeFile()возвращаетnull.
Примеры
Текст
Запись текста в файл txt
Если путь к файлу не существует, файл и его путь будут созданы. Если файл уже существует, он будет перезаписан.
cy.writeFile('path/to/message.txt', 'Hello World')
cy.readFile('path/to/message.txt').then((text) => {
expect(text).to.equal('Hello World') // true
})
{projectRoot}/path/to/message.txt будет создан со следующим содержимым:
"Hello World"
JSON
Запись JSON в файл
Массивы и объекты JavaScript строятся в текстовый формат.
cy.writeFile('path/to/data.json', { name: 'Eliza', email: 'eliza@example.com' })
cy.readFile('path/to/data.json').then((user) => {
expect(user.name).to.equal('Eliza') // true
})
{projectRoot}/path/to/data.json будет создан со следующим содержимым:
{
"name": "Eliza",
"email": "eliza@example.com"
}
Запись данных ответа в файл фикстуры
cy.request('https://jsonplaceholder.typicode.com/users').then((response) => {
cy.writeFile('cypress/fixtures/users.json', response.body)
})
// our fixture file is now generated and can be used
cy.fixture('users').then((users) => {
expect(users[0].name).to.exist
})
Кодировка
Указание кодировки как строки
cy.writeFile('path/to/ascii.txt', 'Hello World', 'ascii'))
{projectRoot}/path/to/message.txt будет создан со следующим содержимым:
Hello World
Указание кодировки как части объекта options
cy.writeFile('path/to/ascii.txt', 'Hello World', {
encoding: 'ascii',
flag: 'a+',
})
Флаги
Добавление содержимого в конец файла
cy.writeFile('path/to/message.txt', 'Hello World', { flag: 'a+' })
Обратите внимание, что добавление предполагает файл простого текста. Если вы хотите объединить, например, объект JSON, вам нужно его сначала прочитать, добавить новые свойства, а затем записать комбинированный результат.
const filename = '/path/to/file.json'
cy.readFile(filename).then((obj) => {
obj.id = '1234'
// write the merged object
cy.writeFile(filename, obj)
})
Аналогично, если вам нужно добавить новые элементы в массив
const filename = '/path/to/list.json'
cy.readFile(filename).then((list) => {
list.push({ item: 'example' })
// write the merged array
cy.writeFile(filename, list)
})
Буфер
Запись буфера напрямую без кодирования в строку
const filename = '/path/to/file.png'
cy.readFile(filename, null).then((obj) => {
// <Buffer ef 3a bf ... >
cy.writeFile(filename, obj, null)
})
Правила
Требования
-
cy.writeFile()требует цепочки вызовов отcy. -
cy.writeFile()требует успешной записи файла на диск. Любые проблемы, такие как проблемы с правами доступа в ОС, приведут к ошибке.
Утверждения
-
cy.writeFile()выполнит утверждения, которые вы прицепили только один раз, и не повторит.
Таймауты
-
cy.writeFile()может выйти за пределы таймаута, когда кодирование записываемого содержимого занимает значительное время.
Журнал команд
Запись массива в файл
cy.writeFile('info.log', ['foo', 'bar', 'baz'])
Вышеприведенная команда отобразится в журнале команд как:
При нажатии на команду writeFile в журнале команд консоль выводит следующее:
История
| Версия | Изменения |
|---|---|
| 9.2.0 | Добавлена опция timeout |
| 4.0.0 |
cy.writeFile() теперь возвращает null вместо contents
|
| 3.1.1 | Добавлена опция flag и добавление с помощью a+
|
| 1.0.0 |
Добавлена команда cy.writeFile() |
См. также
© 2017 Cypress.io
Licensed under the MIT License.
https://docs.cypress.io/api/commands/writefile