【发布时间】:2014-05-05 19:46:03
【问题描述】:
我正在尝试测试一个使用动作委托的简单组件。我想测试某个操作是否发送到组件的 actionDelegate。我正在考虑使用 Sinon 来检查是否正在发送动作,但我不知道如何复制 Ember 用于将其动作发送给其代表/目标的结构。
当用户单击按钮时,我的 sinon“间谍委托”对象将采用什么结构,以便我检查组件是否使用“发送”委托事件?
我创建了一个我想在http://jsfiddle.net/L3M4T/ 测试的示例,但它周围没有测试工具(在组件周围放置测试工具是一项艰巨的工作,只是为了简单的 js 小提琴 - 事实上,将这个组件变成我想要解释这个问题的形状是一项相当多的工作。
这是我的组件:
App.AppProfileComponent = Ember.Component.extend({
actionDelegate: null,
actions: {
hello: function(person) {
if(!Ember.isEmpty(this.get('actionDelegate'))) {
this.get('actionDelegate').send('hello', person);
}
}
}
});
我最初的尝试没有成功,只是编写了一个包含这个片段的测试(使用 sinon 和 qunit):
visit("/").click("button").then(function() {
equal(actionDelegateSpy.called, true, "Action delegate should be called when button pressed");
});
我认为为什么 不起作用的原因很明显,但是由于我尝试了以下方法,但也不起作用:
var actionDelegateSpy = sinon.spy();
var actionDelegate = Ember.ObjectController.extend({
actions: {
"hello" : actionDelegateSpy
}
}).create();
然后通过传递上面定义的 actionDelegate 作为组件上的 actionDelegate 进行测试。
【问题讨论】:
标签: unit-testing testing ember.js sinon