我正在使用ChaplinJS开发应用程序,我必须对应用程序中的某些服务进行一些单元测试,到目前为止,我已经能够创建大多数测试,但是中介人存在问题>,我一直在寻找如何对其进行测试。
这是一个片段
it('SHOULD execute page:goToURL once when called', () => {
var spy = sinon.spy();
Chaplin.mediator.subscribe('page:goToURL', spy);
Chaplin.mediator.publish('page:goToURL', '/someUrl');
assert(spy.called);
});
在这里,我的想法是为该事件(page:goToURL)订阅一个间谍,如果我触发它,则该间谍将知道并以这种方式进行断言,并确定事件是否已正确触发。 / p>
我想问题出在这行
Chaplin.mediator.publish('page:goToURL', '/someUrl');
此行与上一行(订阅)的上下文不同,这就是为什么它直接从服务文件而不是我定义的模拟调用回调的原因。 (我在测试过的文件中做了一些控制台日志,它正在直接执行)
以下显示了我正在测试的代码的实际片段。
initialize: function() {
Chaplin.mediator.subscribe('page:goToURL', this.callback, this);
}
如果触发 page:goToURL ,则将执行回调。
关于如何解决此问题的任何想法或有关如何继续的一些指导?我有sinon chai + mocha作为测试库。谢谢!