【问题标题】:Karma Pipe Test: _this.handler.handle is not a function thrown业力管道测试:_this.handler.handle 不是抛出的函数
【发布时间】:2019-05-16 19:44:55
【问题描述】:

我的 Angular Projekt 中有两个管道。两者的测试看起来相同,只是存在测试。其中一个失败并显示错误消息:An error was thrown in afterAll\nUncaught TypeError: _this.handler.handle is not a function thrown

测试如下所示:

it('create an instance', () => {
    const pipe = new MyPipe();
    expect(pipe).toBeTruthy();
  });

即使我将代码更改为甚至不创建管道它仍然失败。

it('create an instance', () => {
    expect(true).toBeTruthy();
  });

所以测试本身似乎有问题,但我无法弄清楚原因。

karma.conf.js

config.set({
    basePath: '',
    frameworks: ['jasmine', '@angular-devkit/build-angular'],
    plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular-devkit/build-angular/plugins/karma'),
      require('karma-junit-reporter')
    ],
    client: {
      clearContext: false // leave Jasmine Spec Runner output visible in browser
    },
    coverageIstanbulReporter: {
      dir: require('path').join(__dirname, 'coverage'),
      reports: ['html', 'lcovonly', 'text-summary'],
      fixWebpackSourcePaths: true
    },
    reporters: config.angularCli && config.angularCli.codeCoverage
      ? ['progress', 'coverage-istanbul', 'junit']
      : ['progress', 'kjhtml', 'junit'],
    junitReporter: {
      outputFile: 'test-results.xml'
    },
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['Chrome'],
    singleRun: false
  });

【问题讨论】:

  • 一个答案是确保您没有在 .spec.ts 文件中包含 HttpClientModule。你能分享你的整个测试文件吗(不仅仅是“它”)。但是,当我删除它时,我仍然会经常看到这个“错误”。?

标签: node.js angular karma-runner


【解决方案1】:

您应该确保您的代码中满足以下条件:

  • 在“规范”中,您不包括 HttpClientModule,而是使用 HttpClientTestingModule

请参阅此处关于该问题的 SO 帖子: TypeError: _this.handler.handle is not a function error

  • 还要确保任何来自 http 请求的订阅都有错误块。

错误:

  this.myservice.func().subscribe(result => {
    // do stuff
  })

对:

  this.myservice.func().subscribe(result => {
    // do stuff
  }, error => {
    // process error
  })

查看关于那个的 SO 帖子: Angular5 / ng test ERROR : TypeError: this.handler.handle is not a function

(最佳答案) 请注意,如果您在 ngInit 中进行某种服务调用,则尤其如此。

【讨论】:

  • 确实浏览了我所有的代码并更正了它。现在工作。坦克很多
  • @lucabuening 我有一个类似的问题,所以知道大部分需要什么。很高兴它正在工作。
猜你喜欢
  • 2020-11-16
  • 2017-01-31
  • 1970-01-01
  • 2016-10-05
  • 2016-04-26
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2019-11-20
相关资源
最近更新 更多