我有一個單獨的動作定義在一個餘燼控制器調用2個獨立的功能,是控制器的一部分。我想在單元測試中嘲笑這些函數,以確認動作方法是否被稱爲正確的函數。如何單元測試一個餘燼控制器
我的控制器看起來是這樣的:
export default Ember.Controller.extend({
functionA() {
return;
},
functionB() {
return;
},
actions: {
actionMethod(param) {
if(param) {
return this.functionA();
}
else {
return this.functionB();
}
}
}
});
在實踐中,控制器的工作原理,但在單元測試,泛函和functionB都是不確定的。我試圖將this
登錄到控制檯,但無法找到函數A和函數B的位置,所以我無法正確地模擬它們。我期望他們在動作旁邊的對象的頂層,但我只找到_actions
和actionMethod
正確定義。
我的單元測試看起來像下面
const functionA = function() { return; }
const functionB = function() { return; }
test('it can do something', function(assert) {
let controller = this.subject();
// I don't want the real functions to run
controller.set('functionA', functionA);
controller.set('functionB', functionB);
controller.send('actionMethod', '');
// raises TypeError: this.functionA is not a function
// this doesn't work etiher
// controller.functionB = functionB;
// controller.functionA = functionA;
// controller.actions.actionMethod();
}
有沒有人對我怎樣才能在測試環境中代替那些功能的任何想法?或者,有沒有更好的方法來測試這個功能或設置我的控制器?
- 編輯 錯字:this.subject到this.subject()
側注:1.要創建控制器對象,你需要調用'this.subject()'。 2.'controller.send'方法不會返回任何值給調用者 – kumkanillam
吶喊錯字 - 我叫'this.subject()'。至於'controller.send',我嘗試瞭如上所示的方法以及調用'controller.actions.actionMethod()' – user2989731