gpt4 book ai didi

javascript - Cypress.io 中的 cy.readFile 和 cy.fixture 有什么区别?

转载 作者:行者123 更新时间:2023-11-29 17:43:06 26 4
gpt4 key购买 nike

Cypress.io 中的 cy.readFile 和 cy.fixture 有什么区别?我们应该在什么情况下使用 cy.readFile 和 cy.fixture ?

cy.readFile('menu.json')  
cy.fixture('users/admin.json') // Get data from {fixturesFolder}/users/admin.json

最佳答案

有两个主要区别。


首先,这两个函数处理文件路径的方式不同。

cy.readFile() 从您的 cypress 项目文件夹开始,cypress.json 所在的文件夹。换句话说,cy.readFile("test.txt") 将从 (path-to-project)\test.txt 读取。

cy.fixture() 从 fixtures 文件夹开始。 cy.fixture("test.txt") 将从 (path-to-project)\cypress\fixtures\test.txt 读取。请注意,如果您在 cypress.json 中设置了 fixtures 路径,这可能会有所不同。

此处似乎不支持绝对文件路径。


其次,cy.fixture() 尝试猜测文件的编码。

cy.fixture() 假定某些文件扩展名的编码,而 cy.readFile() 不假定,除非在至少一种特殊情况下(参见下)

例如,cy.readFile('somefile.png')会将其解释为文本文档,只是盲目地将其读入字符串。当打印到控制台时,这会产生垃圾输出。但是,cy.fixture('somefile.png') 将读入 PNG 文件并将其转换为 base64 编码的字符串。

这种区别不在于这两个函数的能力,而在于默认行为;如果您指定编码,则两个函数的行为相同:

cy.readFile('path/to/test.png', 'base64').then(text => {
console.log(text); // Outputs a base64 string to the console
});

cy.fixture('path/to/test.png', 'base64').then(text => {
console.log(text); // Outputs the same base64 string to the console
});

备注:

cy.readFile() 并不总是以纯文本形式读取。 cy.readFile() gives back a Javascript object when reading JSON files :

cy.readFile('test.json').then(obj => {
// prints an object to console
console.log(obj);
});

关于javascript - Cypress.io 中的 cy.readFile 和 cy.fixture 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51867796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com