readFile
读取文件并返回其内容。
语法
cy.readFile(filePath)
cy.readFile(filePath, encoding)
cy.readFile(filePath, options)
cy.readFile(filePath, encoding, options)
用法
正确用法
cy.readFile('menu.json')
参数
filePath (String)
项目根目录(包含Cypress配置文件的目录)中文件的路径。
encoding (String)
读取文件时使用的编码。支持以下编码:
'ascii'
'base64'
'binary'
'hex'
'latin1'
'utf8'
'utf-8'
'ucs2'
'ucs-2'
'utf16le'
'utf-16le'
'null'
显式使用null
将返回一个Cypress.Buffer
实例,无论文件扩展名是什么。
options (Object)
传入一个选项对象以更改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) => {
// 将字符串解析为对象字面量
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将以base64编码
// 看起来应该像这样:
// aIJKnwxydrB10NVWqhlmmC+ZiWs7otHotSAAAOw==...
})