Angular jasmine单元测试框架里expect.toHaveBeenCalled的工作原理
生活随笔
收集整理的這篇文章主要介紹了
Angular jasmine单元测试框架里expect.toHaveBeenCalled的工作原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
第120行給handler.handleError方法注入spy后,第121行代碼flush HTTP Mock request會觸發handler.handleError(的wrap實現)調用。第123行代碼檢測該方法是否真正被調用過。
首先執行expect(handler.handleError), 給handler.handleError創建一個spec:
實際上調用currentRunnable的expect方法:
this指向spec,actual就是被wrap后的方法。使用expectationFactory根據工廠方法創建一個expectation:
執行matcherCompare:
以下這段檢查說明,調用toHaveBeenCalled的對象必須是一個spied method:
判斷一個方法是否是spy的邏輯也很簡單,使用instanceof:
之前spied method被調用之后,在calls數組里插入了一條數據,因此只要calls數組有元素,都認為spied methhod已經被call過了:
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的Angular jasmine单元测试框架里expect.toHaveBeenCalled的工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Angular jasmine单元测试框
- 下一篇: Angular jasmine单元测试框