量角器/茉莉花测试抛出“UnknownError:未知错误:超出最大调用堆栈大小”

时间:2014-09-12 11:18:30

标签: selenium-webdriver jasmine protractor browser-automation chrome-web-driver

我有一个测试,每次运行它时,抛出" UnknownError:未知错误:超出最大调用堆栈大小。"

此测试在我的一项服务中调用了一种写入Google云端硬盘的方法。

失败的测试是使用" ui"调用我的doDrive函数,这意味着更新Drive项。如果我改变一个角色" ui" - > " ni",意思是创建一个新的Drive项目,测试工作。被测代码在正常使用中工作正常。

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

我直接使用chrome webdriver,我也有browser.ignoreSynchronization = true;

1 个答案:

答案 0 :(得分:18)

我遇到了同样的问题。我发现将大对象从浏览器返回到量角器会导致“UnknownError:未知错误:超出最大调用堆栈大小”错误。

您应该使用回调检查您发回的resp对象的复杂性。如果它太大,请尝试发回更少的数据。

这可能发生在executeAsyncScriptexecuteScriptevaluate(使用executeScript)。

按OP编辑

通过将callback(resp)更改为callback({title:resp.title})来修复,即简化返回的对象以仅包含我要回复的项目。