2016-07-31 40 views
0

所以我有這個函數,當某個骨幹模型屬性被設置時調用。即:Jasmine等到聽衆調用的函數得到執行

this.listenTo(model, "change:someattr", changeCallback); 

我想在我的茉莉花測試做的是設置該屬性,然後檢查是否changeCallback得到了成功的調用,如果它導致所需的更改。在我的下面的代碼中,看起來好像我的changeCallback函數在執行jasmine斷言後被調用。

that.model.set('someattr', 'xyz'); 
expect(that.model.changeCallback).toHaveBeenCalled(); 

任何想法如何測試?我發現的所有代碼示例處理異步函數直接執行的asych調用。

+0

你能否澄清changeCallback的生活?確切地說,在你的第一個代碼中,它看起來像它的視圖,但第二個似乎是回調在模型本身? – noahpc

回答

0

,因爲沒有服務器響應等待所以只是模型更改回調將立即發生:

  1. 窺視changeCallback並通過調用(http://jasmine.github.io/2.4/introduction.html#section-Spies:_and.callThrough)。
  2. model.set( 「attributeToChange」, 「somethingNew」)
  3. 斷言changeCallback間諜被稱爲
  4. 斷言發生的預期行爲。

或者,您可以分成兩個測試,其中一個只測試更改屬性是否觸發回調,另一個測試回調函數本身。