每次执行多个规范会在Json文件中产生奇怪的行为

每次执行多个规范会在Json文件中产生奇怪的行为,json,asynchronous,protractor,Json,Asynchronous,Protractor,我已经用以下“specs:['*-Spec.js']”配置了我的conf文件,据我所知,这应该会加载我文件夹中的所有Spec文件,对吗 当我执行命令“dragrator conf.js”时,它开始执行我的脚本,没有任何问题,但是,我从中读取信息的文件开始呈现随机数据,我的流程是: 脚本1 生成一个Json文件作为第二个场景的数据库 脚本2 读取创建的数据,并使用此 我提到的奇怪行为是,脚本创建了一个文件,但似乎从另一个文件读取。 创建的文件: 11111111A、22222B、33333333C

我已经用以下“specs:['*-Spec.js']”配置了我的conf文件,据我所知,这应该会加载我文件夹中的所有Spec文件,对吗

当我执行命令“dragrator conf.js”时,它开始执行我的脚本,没有任何问题,但是,我从中读取信息的文件开始呈现随机数据,我的流程是:

脚本1 生成一个Json文件作为第二个场景的数据库

脚本2 读取创建的数据,并使用此

我提到的奇怪行为是,脚本创建了一个文件,但似乎从另一个文件读取。 创建的文件: 11111111A、22222B、33333333C、444444 D

读取最近创建的文件的零件后使用的数据: 123A、34534322b等等

应该是相同的数据。。。但是当我手动将*替换为规格名称时。。它工作正常。。“规格:['1创建数据-Spec.js'],”

知道为什么会这样吗?下面是创建数据和读取文件的代码部分

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(做它需要的事情)感谢您的解释和帮助,我将阅读更多关于它是如何工作的。