参数"的量角器属性不是函数"

时间:2016-06-02 11:11:54

标签: javascript protractor

我试图编写量角器测试,在某些测试中需要模拟XMLHttpRequest。我尝试通过使用executeScript将导入的xhr-moc传递到浏览器来执行此操作。实例被传递给浏览器,但是方法变为string实例时不可调用。

E.g:

it('demo', function() {
    var x = mock;
        browser.executeScript(function (mock) {
            mock.setup()
    }, mock)
});

输出:

...
Failed: unknown error: mock.setup is not a function
...

进一步调查时:

it('demo', function() {
    console.log('from spec: ', typeof mock.setup)

    browser.executeScript(function (mock) {
        return typeof mock.setup
    }, mock)
    .then(function(output) {
        console.log('from browser:', output)
    });
});

输出:

...
Started
from spec:  function
from browser: string
.
...

是否有一种理智的方法将此对象传递给浏览器而不将方法转换为字符串?

或者我可以在发送和反序列化脚本中的对象之前序列化对象以解决此问题吗?

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码。

it('demo', function() {
var x = mock;
    browser.executeScript(function (arguments[0]) {
        arguments[0].setup()
}, mock)

});

您应该使用参数array访问您传递给executeScript方法的参数。您还可以传递任意数量的参数并使用索引访问它。