【问题标题】:No provider for Token AppId没有令牌 AppId 的提供者
【发布时间】:2016-08-06 07:31:12
【问题描述】:

我有一个单元测试正在验证应用程序的 APP_ID 是一个固定值。问题是,我不知道如何设置 APP_ID 使其不是随机生成的。

Angular2 团队网站上的文档很有帮助,但我不确定我的解释是否正确:

如果您需要避免将随机生成的值用作应用程序 id,您可以通过 DI 提供者使用此令牌配置根 Injector 来提供自定义值。

这是否意味着我会将其作为提供程序添加到我的应用程序的引导程序中?

bootstrap(App, [
    provide(APP_ID, {name: 'MyApp'})
]);

我怀疑那是遥不可及的。有其他人知道如何设置 APP_ID 或它的用途吗?

injector.spec.ts

import {
it,
inject,
injectAsync,
beforeEachProviders,
TestComponentBuilder
} from 'angular2/testing';
import {APP_ID} from 'angular2/core';


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

【问题讨论】:

    标签: unit-testing typescript angular


    【解决方案1】:

    测试中

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

    对于您的实际应用程序,您可以这样编写

    bootstrap(App, [
        provide(APP_ID, {useValue: 'MyApp'})
    ]);
    

    【讨论】:

    • 很好,很高兴知道我离得不远了。是否可以导入发生引导的文件,而不是在beforeEachProviders 中复制provide(APP_ID, {useValue: '...'}) 部分?
    • 请参阅stackoverflow.com/a/36354220/217408 如何创建提供程序并重用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2012-07-07
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    相关资源
    最近更新 更多