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