每个钩子错误之前的角度因果报应幻影

Angular karma phantom before each hook error

本文关键字:因果报应 幻影 错误      更新时间:2023-09-26

我用因果报应和幻影运行我的测试,我使用摩卡和西农,有时测试通过,有时毫无理由地我会出现以下错误:

    ✖ "before each" hook: workFn
      ✔ should call get user api
  ✖ "after each" hook for "should call get user api"
Finished in 1.04 secs / 0.2 secs
SUMMARY:
✔ 42 tests completed
✖ 3 tests failed
FAILED TESTS:
  UserService
    ✖ "before each" hook: workFn
      PhantomJS 1.9.8 (Mac OS X 0.0.0)
    TypeError: 'null' is not an object (evaluating 'document.querySelector('.arrow' + index).classList') (public/client/build/main.js:3195)
  ✖ "after each" hook for "should call get user api"
    PhantomJS 1.9.8 (Mac OS X 0.0.0)
    PhantomJS 1.9.8 (Mac OS X 0.0.0)
  TypeError: 'null' is not an object (evaluating 'currentSpec.$injector')
      at public/vendor/angular-mocks/angular-mocks.js:2229

是什么原因导致了这个问题?

根据我的经验,使用Karma和/或PhantomJS的DOM调用可能是个问题。PhantomJS中的DOM操作与标准浏览器不同,因此,它在GUI操作中经常出错。

我的建议(尽管这可能不是最好的)是监视或模拟你在document之外使用的文档方法,因为它们的作用无论如何都不在你的掌控之中。

因果报应输出清楚地突出了问题,不是吗?

'document.querySelector('.arrow' + index).classList'

选择器在元素上找不到,所以undefined的classList为null。你需要调查一下。