【问题标题】:Testing with TestBed: no Provider for StatusBar error使用 TestBed 进行测试:没有提供 StatusBar 错误
【发布时间】:2017-08-17 01:41:44
【问题描述】:

我已阅读 article 关于使用 TestBed 测试 Ionic2 项目的内容,当我尝试在我的环境中重复文章中的示例时遇到了麻烦。当我尝试在 第 3 步 上开始测试时,出现错误“No provider for StatusBar”

这可能是一个愚蠢的问题,但有人能猜出为什么会这样吗?

StatusBar 包含(导入)在我的 app.component.ts 文件中。

import { StatusBar } from '@ionic-native/status-bar';

【问题讨论】:

    标签: angular typescript ionic2 testbed


    【解决方案1】:

    在使用 TestBed 时,您正在创建一个全新的 @NgModule,仅用于测试。因此,您必须配置该测试模块以导入其所有依赖项 - 在您的情况下,包括状态栏。

    因此,与您在主应用程序中导入状态栏的方式相同(直接或通过导入其包含的 NgModule),您必须对您的测试模块执行相同的操作。

    TestBed.configureTestingModule({
      ......,
      providers: [
        StatusBar
      ]
    })
    

     TestBed.configureTestingModule({
       imports: [
          ModuleContainingStatusBar
       ]     
    })
    

    (不好意思,对Ionic本身不熟悉所以不知道怎么导入StatusBar使用)

    【讨论】:

    • 谢谢!有用。但工作有点奇怪。我应该再次在测试模块中导入 StatusBar,尽管它应该已经被导入到测试组件中。
    • 这取决于“在测试组件中导入”的含义。如果您指的是 ES6 导入,即 import {bla} from 'blah' 语句,那么是的,它将出现在所有地方。
    • 是的,import {bla} from 'blah' 正是我的意思。
    【解决方案2】:

    尝试将其添加到您的@NgModuleproviders 数组中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 2017-03-03
      • 2017-08-27
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 2017-05-19
      相关资源
      最近更新 更多