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

pin*_*yid 18 browser-automation jasmine selenium-webdriver protractor 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);
});
});
Run Code Online (Sandbox Code Playgroud)

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

Off*_*rmo 18

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

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

这可以发生executeAsyncScript,executeScriptevaluate(使用executeScript).

由OP编辑......

通过更改callback(resp)来 修复callback({title:resp.title}),即简化返回的对象以仅包含我正在进行的那些项目.