每次执行多个规范会在Json文件中产生奇怪的行为
我已经用以下“specs:['*-Spec.js']”配置了我的conf文件,据我所知,这应该会加载我文件夹中的所有Spec文件,对吗 当我执行命令“dragrator conf.js”时,它开始执行我的脚本,没有任何问题,但是,我从中读取信息的文件开始呈现随机数据,我的流程是: 脚本1 生成一个Json文件作为第二个场景的数据库 脚本2 读取创建的数据,并使用此 我提到的奇怪行为是,脚本创建了一个文件,但似乎从另一个文件读取。 创建的文件: 11111111A、22222B、33333333C、444444 D 读取最近创建的文件的零件后使用的数据: 123A、34534322b等等 应该是相同的数据。。。但是当我手动将*替换为规格名称时。。它工作正常。。“规格:['1创建数据-Spec.js'],” 知道为什么会这样吗?下面是创建数据和读取文件的代码部分每次执行多个规范会在Json文件中产生奇怪的行为,json,asynchronous,protractor,Json,Asynchronous,Protractor,我已经用以下“specs:['*-Spec.js']”配置了我的conf文件,据我所知,这应该会加载我文件夹中的所有Spec文件,对吗 当我执行命令“dragrator conf.js”时,它开始执行我的脚本,没有任何问题,但是,我从中读取信息的文件开始呈现随机数据,我的流程是: 脚本1 生成一个Json文件作为第二个场景的数据库 脚本2 读取创建的数据,并使用此 我提到的奇怪行为是,脚本创建了一个文件,但似乎从另一个文件读取。 创建的文件: 11111111A、22222B、33333333C
Describe ("Creating a new data", function() {
var AmountofDniToCreate = [1,2,3,4,5];
it ("Create the preRequisite file", function()
{
var DNIarray = [];
var EmailArray = [];
//Create all the DNIs for Json file, those will be used to create new data
AmountofDniToCreate.forEach(function (counterforEach){
var dniNumberFile = getRandomNum(12345678, 99999874);
DNIarray.push(dniNumberFile + getDniLetter(dniNumberFile));
EmailArray.push("email@gmail.com");
});
//Create outputFile with all the Itinerari DNIs
var fs = require('fs');
var objText = {"itinerari":DNIarray,"email": EmailArray};
var JsonFile = JSON.stringify(objText)
var outputFilename = "Created_Itinerari_Output.json";
fs.writeFile(outputFilename, JsonFile, function(err) {
if(err) {
console.log(err);
}
else {
console.log("JSON saved to " + outputFilename);
}
});
it ("Login and access to the Create Itinerari screen", function()
{
//Execute the login
});
it ("Create the data in the system", function()
{
//In this part, it reads a "different" file than the one that is actually created above (Should be the same!)
var jsonDNI = require('C:Mypath.../Created_Itinerari_Output.json');
};
//End
});
您需要将写入文件更改为同步,否则当第二次开始时,第一次触发的写入文件可能未完成,因为
fs.writeFile
是异步的
var content = JSON.stringify(objText)
var outputFilename = "Created_Itinerari_Output.json";
fs.writeFileSync(outputFilename, content);
甚至,Jasmine说,下一个项目将在上一个项目完成后开始。
这意味着下一步它将等待前一个it块中的所有代码行被执行
但这并不意味着下一步它将等待代码行的异步操作完成。除了异步操作被包装为promise之外,比如量角器API:click()
,getText()
等等
Jamsine将等待属于上一个it块的所有承诺完成,然后启动下一个it块。很难理解脚本是什么。包括剧本吗?你是说
it
块作为脚本吗?“fs.writeFile”是异步的,您需要等待它完成。请澄清脚本是什么,文件是在哪里创建的,您在哪里读取文件。Hello@cnishina,文件是在执行“读取”操作后创建的,我更改了代码结构,现在它工作正常,谢谢您的时间!Hi@yong,我对它做了一点修改,在同一个描述中没有使用2或3个“it”,而是每个描述只使用一个,现在(在同一个“it”中创建和读取文件,然后才使用数据),它工作正常!vars->descripe(创建值和文件)->it(做它需要的事情)感谢您的解释和帮助,我将阅读更多关于它是如何工作的。