如何测试主干视图是否正确侦听特定事件

How to test if a backbone view listens to specific event correctly

本文关键字:事件 是否 视图 何测试 测试      更新时间:2023-09-26

我正在测试Backbone.js视图是否正确侦听路由器触发的特定事件。我正在测试的视图上的initialize方法看起来像这样:

initialize: function(options) {
  this.router = options.router; // pass router obj through args
  this.listenTo(this.router, 'login_manager:show', this.buildLoginPage); // not shown on this snippet, but defined later
}

当路由在我的路由器上匹配时,我会执行以下操作:

showLogin: function() {
  this.trigger('login_manager:show');
}

这段代码在浏览器上按预期运行,但我为它做的测试没有通过

beforeEach(function() {
  this.router = new Backbone.Router();
  this.loginManager = new LoginManager({
    router: this.router
  });
});
afterEach(function() {
  this.loginManager = null;
  this.router = null;
});
it('listens to correct event', sinon.test(function() {
  var spy = sinon.spy(this.loginManager, 'buildLoginPage');
  this.loginManager.router.trigger('login_manager:show');
  expect(spy.called).to.be.true;
}));

我还没能通过这次考试,所以我想知道是否有人能帮我?

谢谢,

迭戈。

也许这可以帮助

it('listens to correct event', () => {
  var stub = sinon.stub();
  Backbone.Events.listenTo(this.loginManager.router, 'login_manager:show', stub);
  this.loginManager.router.trigger('login_manager:show');
  stub.called.should.be.true;
});