【问题标题】:Configure Angular service for use in AngularJS module unit tests配置 Angular 服务以在 AngularJS 模块单元测试中使用
【发布时间】:2019-12-11 22:43:26
【问题描述】:

我在使用 downgradeInjectible 降级的 AngularJS 模块中使用 Angular 服务。该应用程序在降级的服务上运行良好,但我的所有单元测试都失败并出现以下错误:

错误:实例化可注入的“MyAngularService”时出错:不是有效的“@angular/upgrade”应用程序。 您是否忘记降级 Angular 模块或将其包含在 AngularJS 应用程序中?

我是否需要在我的业力测试设置中再次使用 downgradeInjectable 来配置此服务以进行单元测试?

我正在测试以下代码以在测试设置中降级服务,但我认为这不是正确的方法。

// downgrade service for unit tests
beforeEach(angular.mock.module('myModule').factory('MyAngularService',downgradeInjectable(MyAngularService) as any))

关于如何解决此问题的任何建议?

【问题讨论】:

  • 我不断收到这个错误,知道如何解决它吗?
  • 你找到解决办法了吗?

标签: angular karma-runner


【解决方案1】:

参加聚会有点晚了,但我刚刚想通了。你可以这样做

angular.mock.module(($provide: ng.auto.IProvideService) => {
  $provide.value("MyAngularService", myAngularServiceMock));
});

作为测试中beforeEach 的一部分。这样,您将提供一个先前创建的 myAngularServiceMock 模拟实例作为预期的 MyAngularService

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多