【问题标题】:Angular 2 basic test failsAngular 2 基本测试失败
【发布时间】:2016-04-06 13:04:11
【问题描述】:

我开始使用 Angular2 和测试:Jasmine & Karma。我写了一些运行良好的健全性测试,但是当我尝试一个简单的默认注入器测试时它失败了:

using-injector.spec.ts

describe('default test injector', () => {
  it('should provide default id', inject([APP_ID], (id) => {
    expect(id).toBe('a');
  }));
});

我在 Karma 中看到的错误:

Failed: No provider for Token AppId!
Error: DI Exception
    at NoProviderError.BaseException [as constructor] (C:/Users/f
ocuments/dev/node_modules/angular2/bundles/angular2.js:7587:21) ...

任何提示将不胜感激

【问题讨论】:

  • 您是否像github.com/angular/angular/blob/master/… 中所示那样致电setTestProviders(...)
  • APP_ID是怎么定义的?
  • 您是否导入了服务?您可以使用新键盘来实例化服务,而不是使用注入器。
  • 工作!我在测试中直接导入了 setBaseTestProviders(),但是我在测试 angular2-test-seed 项目中注意到这个导入在“karma-test-shim.js”中。我不确定,但是,如果我在下一次测试开发中需要这个。谢谢!

标签: angular karma-jasmine


【解决方案1】:

我会在beforeEachProviders 函数中指定APP_ID

beforeEachProviders(() => [
  APP_ID
]);

那你应该可以注入了。

【讨论】:

    【解决方案2】:

    进口

    import {setBaseTestProviders} from 'angular2/testing';
    import {
      TEST_BROWSER_PLATFORM_PROVIDERS,
      TEST_BROWSER_APPLICATION_PROVIDERS
    } from 'angular2/platform/testing/browser';
    setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS,
                         TEST_BROWSER_APPLICATION_PROVIDERS);
    

    在我的测试和工作。 总的来说,我认为这个导入应该在“karma-test-shim.js”中看到: https://github.com/juliemr/ng2-test-seed

    【讨论】:

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