0
我試圖測試使用動作委派的簡單組件。我想測試某個動作是否發送到組件的actionDelegate。我正在考慮使用Sinon來檢查是否發送了這個操作,但我無法弄清楚如何複製Ember用來將其操作發送給其代表/目標的結構。Emberjs測試組件的動作代理
我的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);
}
}
}
});
而且我inital嘗試沒有工作,只是寫了一個測試,在它有這個片段(使用興農& 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進行測試。
這是「明顯的」固定通過實現所有異步行爲必須以Ember.run通話包裹運行鍼對預期之前,它同步它。 –