Модифицированный репортер JUnit xml для предоставления жасмина RangeError: Превышен максимальный размер стека вызовов - PullRequest
1 голос
/ 31 мая 2019

Я использую модифицированную версию Jasmine JUnit Reports (находится здесь: https://github.com/angular/protractor-cookbook/tree/master/jasmine-junit-reports) и получаю сообщение об ошибке RangeError: Maximum call stack size exceeded

Причина, по которой я изменил отчет, заключается в том, что мне нужны отчеты xml, созданные на шаге suiteDone, а не на шаге jasmineDone. Таким образом, в основном я переместил весь код из jasmineDone в функцию suiteDone, которая теперь вызывает ошибку, которую я вижу. Я относительно новичок в js, поэтому не совсем уверен, есть ли какая-то асинхронная проблема или что-то в этом роде.

Это трассировка стека и связанные биты кода:

- RangeError: Maximum call stack size exceeded
        at getSuite (C:\Users\AutomationUser\application\admin\adminui\e2e\common-pages\reporter.js:248:26)
        at exportObject.QmetryReporter.self.suiteDone (C:\Users\AutomationUser\application\admin\adminui\e2e\common-pages\reporter.js:312:21)
        at exportObject.QmetryReporter.self.suiteDone (C:\Users\AutomationUser\application\admin\adminui\e2e\common-pages\reporter.js:322:22)

getSuite функция (строка 248):

function getSuite(suite) {
    __suites[suite.id] = extend(__suites[suite.id] || {}, suite);
    return __suites[suite.id];
}

Кусок suiteDone Функция:

self.suiteDone = function (suite) {
    suite = getSuite(suite); // this is line 312 from stacktrace
    if (suite._parent === UNDEFINED) {
        // disabled suite (xdescribe) -- suiteStarted was never called
        self.suiteStarted(suite);
    }
    suite._endTime = new Date();
    currentSuite = suite._parent;
    // below this line is the start of jasmineDone function that I moved into this function
    if (currentSuite) {
        // focused spec (fit) -- suiteDone was never called
        self.suiteDone(fakeFocusedSuite); // this is line 322 from stacktrace
    }

Кажется, проблема возникает только при выполнении большой группы тестовых спецификаций. Если просто запустить один тестовый файл, я не получаю проблему.

1 Ответ

0 голосов
/ 31 мая 2019

Я сталкивался с этим много раз.Решение, которое работает для меня, заключается в использовании пакета увеличения-памяти-лимита .Просто установите его глобально и затем запустите increase-memory-limit в корне вашего проекта (где находится ваш package.json).Вы должны выполнить эту команду после того, как вы установили все свои зависимости и перед тем, как начать тестирование.Вы увидите несколько выходных данных, которые выглядят примерно так:

'~/app/node_modules/.bin/webdriver-manager' written successfully.
'~/app/node_modules/.bin/webdriver-manager.cmd' written successfully.
'~/app/node_modules/.bin/webpack' written successfully.
'~/app/node_modules/.bin/webpack-cli' written successfully.
'~/app/node_modules/.bin/webpack-cli.cmd' written successfully.
'~/app/node_modules/.bin/webpack-dev-server' written successfully.
'~/app/node_modules/.bin/webpack-dev-server.cmd' written successfully.
'~/app/node_modules/.bin/webpack.cmd' written successfully.
'~/app/node_modules/.bin/which' written successfully.
'~/app/node_modules/.bin/which.cmd' written successfully.

После этого вы больше не увидите эту ошибку.Мой полный набор регрессии очень большой, и я всегда видел одну и ту же ошибку, когда пытался запустить полный набор сразу.Вышеуказанный пакет исправил это для меня, и у меня не было проблем с тех пор, как я начал его использовать.

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