Karma-jasmine UncaughtReference 错误状态栏未定义

Karma-jasmine UncaughtReference Error Statusbar not defined

我在测试使用 cordova 和 ionic 构建的混合应用程序时遇到了奇怪的事情。

我使用 karma-jasmine 进行单元测试。如果我 运行 我的测试文件很少,它们就会成功。如果我运行他们3个人在一起,他们仍然成功。如果将它们全部包含在 karma (path/tests/*.js) 中,5 次中有 3 次成功,并出现以下错误: "StatusBar" 未定义。

StatusBar 是 cordova 插件 "cordova-plugin-statusbar"。我想知道为什么它只在一起测试所有文件而不是一个一个地测试时出现。我已经尝试重新排序测试文件,但在第三个测试文件之后它们总是失败。

每次触发测试时,app.js 都会初始化并启动。我不知道这是否是一个问题。

有什么建议吗?

问题是,我没有模拟我的 angular 应用程序模块。 在我的模块的 运行 函数中,我得到了 $ionicPlatform 来监听 "deviceReady" 事件。在这种情况下,我访问了状态栏等 cordova 插件。但是由于我没有用它的插件模拟应用程序模块,所以一旦触发 deviceready 事件,测试就开始失败。

为了解决这个问题,我刚刚定义了一个全局变量 "testEnvironment",因为我不想在模块中测试我的 运行 方法,我只是检查 testEnvironment 是否为真并退出运行 方法。我在全局范围内定义了变量,并在我开始单元测试后立即设置它。

我希望有类似问题的人觉得这很有帮助。