Javascript 预期是间谍,但得到了功能
我正在尝试为此模块(2)实施测试(1)。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)中的评论中看到的,我得到了一条消息
错误:预期是间谍,但得到了函数。
模块工作,但测试失败。有什么想法吗
(一)
(二)
您需要进入实际的方法,在本例中是在原型上
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();