茉莉花-“无法读取未定义的抛出属性'subscribe'”

时间:2019-02-25 21:29:47

标签: angular unit-testing jasmine

我刚刚开始使用Jasmine编写现有Angular应用程序的单元测试,大约50%的时间,我遇到以下错误:

  

Chrome 72.0.3626(Mac OS X 10.14.3)错误{       “ message”:“在afterAll \ nUncaught TypeError中引发了错误:无法读取未定义的引发的属性'subscribe'”,       “ str”:“在afterAll \ nUncaught TypeError中引发了错误:无法读取未定义引发的属性'subscribe'”} Chrome   72.0.3626(Mac OS X 10.14.3):执行131之148(1失败)错误(51.175秒/ 50.533秒)

enter image description here

另外50%的时间,所有测试都通过了,没有任何问题。

此错误消息的主要问题是茉莉花没有告诉我问题出在哪里,而如果我在我的任何测试(例如expect(true).toBe(false))中写东西,那么茉莉花就会告诉我{{1 }}失败。

如何找到此错误的来源?有人遇到过茉莉花不一致的事吗?

感谢所有帮助!

2 个答案:

答案 0 :(得分:0)

经过数小时的挖掘,终于解决了该问题。

karma.conf.js中将random标志设置为false后,控制台中的错误消息开始变得更加有意义。

module.exports = function(config) {
  config.set({
    client: {
      jasmine: {
        random: false
      }
    }
  })
}

在我们的案例中,由于未正确处理其中一个组件中的异步调用,我们的测试之一失败了。删除该测试可解决不一致问题。

即使控制台中的消息仍然无法查明错误的始发者,它也至少能够显示错误来自的组件/测试套件。

答案 1 :(得分:-1)

我遇到了类似的问题。似乎我的问题在无法读取属性'appendChild'中。我也是单元测试的新手,似乎无法弄清楚。

10% building modules 2/2 modules 0 active26 02 2019 12:14:37.196:WARN [karma]: No captured browser, open http://localhost:9876/

26 02 2019 12:14:37.199:INFO [karma]:Karma v3.0.0服务器从http://0.0.0.0:9876/开始 26 02 2019 12:14:37.199:INFO [启动器]:启动浏览器Chrome,并发无限 26 02 2019 12:14:37.213:INFO [启动器]:启动浏览器Chrome 26 02 2019 12:14:43.944:WARN [karma]:未捕获浏览器,打开http://localhost:9876/
26 02 2019 12:14:44.088:INFO [Chrome 72.0.3626(Mac OS X 10.14.3)]:连接到ID为24060242的套接字GLlJTNNpXTfpZNdcAAAA Chrome 72.0.3626(Mac OS X 10.14.3)错误   {     “消息”:“ afterAll \ nTypeError中引发错误:无法在HtmlReporter.specDone(node_modules / karma-jasmine-html-reporter / src / lib / html.jasmine处的\ n处读取null \ n的属性'appendChild' report.js:150:15)\ n在\ n在ZoneQueueRunner.push ../ node_modules / zone.js / dist / jasmine-patch.js.jasmine.QueueRunner.ZoneQueueRunner.execute(http://localhost:9876/node_modules/zone.js/dist/jasmine-patch.js?:250:1)\ n在 ”,     “ str”:“在afterAll \ nTypeError中引发错误:无法在HtmlReporter.specDone(node_modules / karma-jasmine-html-reporter / src / lib / html.jasmine。 report.js:150:15)\ n在\ n在ZoneQueueRunner.push ../ node_modules / zone.js / dist / jasmine-patch.js.jasmine.QueueRunner.ZoneQueueRunner.execute(http://localhost:9876/node_modules/zone.js/dist/jasmine-patch.js?:250:1)\ n在 ”   } Chrome 72.0.3626(Mac OS X 10.14.3):执行1 of 41错误(0秒/0.011秒)