Подтвердить что ты не робот

Протрактор/тест жасмина "UnknownError: неизвестная ошибка: превышен максимальный размер стека вызовов"

У меня есть тест, который каждый раз, когда я его запускаю, выдает " UnknownError: неизвестная ошибка: превышен максимальный размер стека вызовов."

Этот тест вызывает метод в одной из моих служб, которая записывается на Google Диск.

Тест, который терпит неудачу, вызывает функцию doDrive с помощью "ui", что означает обновление элемента "Диск". Если я сменил один символ "ui" → "ni", то есть создать новый элемент "Диск", тест будет работать. Проверяемый код работает нормально при обычном использовании.

it('should update a file', function() {
browser.executeAsyncScript(function(callback) {
    // get service
    var service=angular.element(document.getElementById('ngapp')).injector().get('DriveQ')
    // generate a title
    var title = 'title of file';
    // call doDrive to create a new file
    service.doDrive({t:'ui',id:'0B6B-RNrxsCu2Sll7JZTYy2aDA', item:{title:title}})
        .then(function (resp){
                    resp.originalTitle=title;
                    callback(resp)
            });
}).then(function(resp) {
    expect(resp.title).toEqual(resp.originalTitle);
});
});

Я использую хром-webdriver напрямую, и у меня также есть browser.ignoreSynchronization = true;

4b9b3361

Ответ 1

У меня такая же проблема. Я обнаружил, что возвращение больших объектов из браузера в транспортирёр приводит к ошибке "UnknownError: unknown: максимальный размер стека вызовов превышен.

Вы должны проверить сложность объекта resp, который вы отправляете обратно с обратным вызовом. Если он слишком большой, попробуйте отправить меньше данных.

Это может произойти с executeAsyncScript, executeScript и evaluate (которые используют executeScript).

Редактировать по OP...

Исправлено, изменив callback(resp) на callback({title:resp.title}), то есть упростив возвращаемый объект, содержащий только те элементы, которые я использую.