gpt4 book ai didi

javascript - 我应该如何在backbone.marionette中测试/监视此类事件

转载 作者:行者123 更新时间:2023-11-28 02:44:58 25 4
gpt4 key购买 nike

我正在尝试为此模块 (2) 实现测试 (1)。
我的目的是检查触发特定事件时是否获取集合。
正如您从我在 (2) 中的评论中看到的那样,我收到消息 Expected spy 重启轮询已被调用。
模块可以工作,但测试失败。有任何想法吗?

<小时/>

附注:

此问题与此相关 Expected a spy, but got Function

<小时/>

(1)

// jasmine test module

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();
// Expected spy restartPolling to have been called.
});
});
<小时/>

(2)

// model view module
return Marionette.CompositeView.extend({
initialize: function () {
this.collection = new UserBoardCollection();
this.collection.startPolling();
app.vent.on('onGivePoints', this.collection.restartPolling);
},
// other code
});
<小时/>

(3)

// polling module

var poller = {
restartPolling: function () {
this.stopPolling();
this.startPolling(options);
},
// other code
};
<小时/>

(4)

var UsersBoardCollection = Backbone.Collection.extend({
// some code
});

_.extend(UsersBoardCollection.prototype, poller);

return UsersBoardCollection;

最佳答案

我正在使用 Marionette,并且测试它有点不同。我的想法不是测试,当在调用该函数的真实应用程序上触发事件时,因为这将由 Marionette 开发人员进行测试。

我测试该事件是否已绑定(bind)到 app.vent。因此,我在 app.vent.on 上创建了一个 spy ,然后自己触发该函数:

spyOn(app.vent, 'on');
expect(app.vent.on.argsForCall[0][0]).toBe('onGivePoints')

app.vent.trigger.argsForCall[0][1]()

关于javascript - 我应该如何在backbone.marionette中测试/监视此类事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12058542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com