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