Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 预期是间谍,但得到了功能_Javascript_Backbone.js_Jasmine_Marionette - Fatal编程技术网

Javascript 预期是间谍,但得到了功能

Javascript 预期是间谍,但得到了功能,javascript,backbone.js,jasmine,marionette,Javascript,Backbone.js,Jasmine,Marionette,我正在尝试为此模块(2)实施测试(1)。 我的目的是检查是否在触发特定事件时提取集合。 正如您从我在(2)中的评论中看到的,我得到了一条消息错误:预期是间谍,但得到了函数。 模块工作,但测试失败。有什么想法吗 (一) (二) 您需要进入实际的方法,在本例中是在原型上 describe('When onGivePoints is fired', function () { beforeEach(function () { spyOn(UsersBoardCollecti

我正在尝试为此模块(2)实施测试(1)。
我的目的是检查是否在触发特定事件时提取集合。
正如您从我在(2)中的评论中看到的,我得到了一条消息
错误:预期是间谍,但得到了函数。

模块工作,但测试失败。有什么想法吗


(一)


(二)


您需要进入实际的方法,在本例中是在原型上

describe('When onGivePoints is fired', function () {
    beforeEach(function () {
        spyOn(UsersBoardCollection.prototype, 'restartPolling').andCallThrough();
        app.vent.trigger('onGivePoints');
    });
    it('the board collection should be fetched', function () {
        expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();
    });
});

监视原型是一个很好的技巧,当您无法获取要监视的实际实例时,可以使用它。

我也遇到了同样的问题,但我通过在函数调用中传递参数解决了这个问题。然后您必须在
it

var data = {name:"test"}
spyOn(UsersBoardCollection.prototype, "restartPolling").and.callThrough();
UsersBoardCollection.prototype.restartPolling(data);
expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();

我有这个bug是因为我加载了两个版本的sinon,或者我没有正确初始化sinon jasmine。当我在规范设置中显式加载sinon和sinon jasmine时,它开始正常运行。

没有足够的代码来查看发生了什么。请包含的不仅仅是单个函数-至少包括函数所属的对象定义和实例化对象的代码。@DerickBailey感谢您的时间。我用模式代码更新了我的问题。我使用的是QUnit而不是Jasmine,但是你对app.vent.trigger的调用不应该是在“it”方法中而不是在每个之前?@codemonkey,@DerickBailey,实际上我得到了一个不同的错误:
预期是间谍,但得到了函数
。我更新了我的问题。如果该函数在原型上不存在,并且是React类中的一个函数,那么这是否可以工作?
describe('When onGivePoints is fired', function () {
    beforeEach(function () {
        spyOn(UsersBoardCollection.prototype, 'restartPolling').andCallThrough();
        app.vent.trigger('onGivePoints');
    });
    it('the board collection should be fetched', function () {
        expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();
    });
});
var data = {name:"test"}
spyOn(UsersBoardCollection.prototype, "restartPolling").and.callThrough();
UsersBoardCollection.prototype.restartPolling(data);
expect(UsersBoardCollection.prototype.restartPolling).toHaveBeenCalled();