8

我正在使用 karma 和 phantom 运行我的测试,我正在使用 mocha 和 sinon,有时测试通过了,有时我没有任何理由得到这个错误:

    ✖ "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

什么会导致这个问题?

4

2 回答 2

3

根据我的经验,使用 Karma 和/或 PhantomJS 的 DOM 调用可能是个问题。PhantomJS 中的 DOM 不像标准浏览器那样运行,因此,它在 GUI 操作上往往会出错。

我的建议(尽管它可能不是最好的)是监视或模拟您正在使用的文档方法,document因为它们所做的事情无论如何都无法控制。

于 2016-04-25T17:39:29.737 回答
0

业力输出清楚地突出了问题,不是吗?

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

它无法通过选择器在元素上找到,因此classListundefined 为空。你需要调查一下。

于 2016-04-23T13:15:57.653 回答