[英]Protractor - read in spec 2 a CSV file populated in spec 1
我正在使用 Protractor 来自动化一些测试。
在规范 1 中,我做了一些操作并在 CSV 文件中收集了一些信息:
describe("Spec 1", function () {
for (let i of some_useful_array) {
it("does some business", async function () {
saveData(someData)
})
}
function saveData(someData) {
fs.appendFile("./file.csv", "\n" + someData, (err) => {
if (err) {
console.log(err);
}
})
}
})
在规范 2 中,我想使用以下信息:
var myFile= fs.readFileSync('./file.csv');
const data = parse(myFile, {
columns: true,
skip_empty_lines: true
})
describe("Spec 2", function () {
for (let i of some_other_useful_array) {
it("does some other business", function () {
console.log(data) // logs an empty array ([]) when run in the same execution than spec 1
})
}
})
当我分别运行规范 1 和规范 2 时,它就像一个魅力,但当我在同一执行中运行它们时它不起作用。 我想我需要关闭一些东西,我已经尝试了一些东西(例如fs.close()
)但这些都不起作用。
任何想法?
编辑:我尝试了一些东西:在规范 1 中将 file.csv 复制到 file2.csv,并在规范 2 中使用 file2.csv。它似乎工作得更好一点。 虽然是讨厌的解决方法,但在我遇到更好的解决方案之前已经足够好了。
fs.appendFile是异步的,这意味着 javascript 不会等到它完成它的任务。 基本上规范 2 在 csv 完全创建之前运行。 当您运行至少需要几秒钟的真实规范时,这可能不会成为问题。 但为了安全起见,你最好 go 和fs.appendFileSync做同样的事情,但在这个任务完成之前不会安排另一个任务
此处描述的解决此行为的另一种方法https://stackoverflow.com/a/45463672/9150146
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.