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

时间:2018-05-17 15:32:22

标签: json asynchronous protractor

我已使用以下"规格配置我的conf文件:[' * - Spec.js'],"据我所知,这应该加载我的文件夹中的所有Spec文件,对吗?

当我执行命令"量角器conf.js"它开始执行我的脚本没有任何问题但是,文件im从读取信息开始到呈现随机数据,我的流程是:

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

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

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

在读取最近创建的文件的部分之后使用的数据: 123123123A,34534322b等......

应该是相同的数据......但是!当我手动将*替换为规范的名称时......它可以正常工作.."规格:[' 1创建数据规范'],"

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

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
});

1 个答案:

答案 0 :(得分:0)

您需要将写入文件更改为同步,否则当第二次开始时,首先触发的写入文件可能未完成,因为fs.writeFile是异步。

var content = JSON.stringify(objText)
var outputFilename = "Created_Itinerari_Output.json";
fs.writeFileSync(outputFilename, content);

即使,Jasmine说接下来它将在之前完成时开始。 这意味着接下来它将等待执行之前的所有代码行。

但并不意味着接下来它将等待代码行的异步操作完成。除了异步操作被包装为承诺,例如量角器API:click()getText()等等。

Jamsine将等待所有承诺属于前一个块完成,然后启动下一个它阻止。