Выполнение более одной спецификации за раз приводит к странному поведению в файле Json - PullRequest
0 голосов
/ 17 мая 2018

Я настроил свой файл conf со следующими «specs: ['* -Spec.js']», насколько я знаю, это должно загрузить все файлы Spec в мою папку, верно?

Когда я выполняю команду "protractor conf.js", он начинает выполнять мои сценарии без каких-либо проблем, но файл, с которого я считываю информацию, начинает представлять случайные данные, у меня есть поток:

Сценарий 1 Генерацияфайл Json, служащий базой данных для второго сценария

Скрипт 2 Считывает созданные данные и работает с этим

Странное поведение, о котором я упоминал, состоит в том, что скрипты создают один файл, но, похоже,читать с другого.Созданный файл: 11111111A, 22222222B, 33333333C, 44444444D

Данные, используемые после части, которая читает недавно созданный файл: 123123123A, 34534322b и т. Д. *

И должны быть такими же данными... но!когда я вручную заменяю * на имя Spec .. он работает правильно .. "specs: ['1 Создайте Data-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
});

1 Ответ

0 голосов
/ 18 мая 2018

Вам нужно изменить записывающий файл на синхронизацию, в противном случае, когда второй файл начинается, записывающий файл, запущенный первым, может быть не завершен, потому что fs.writeFile - Асинхронный.

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

Четный, Жасминговорит, что следующий будет запущен, когда предыдущий завершен.Это означает, что затем он будет ожидать выполнения всех строк кода в предыдущем блоке.

Но это не значит, что он будет ожидать завершения асинхронных операций строки кода.За исключением того, что асинхронная операция обернута как обещание, например API-интерфейс транспортира: click(), getText() и т. Д.

Jamsine будет ожидать завершения всех обещаний, принадлежащих предыдущему блоку it, а затем начнет следующий блок it.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...