【问题标题】:Angular 2 Component test error: Cannot resolve all parameters for 'TestComponentBuilder'Angular 2 组件测试错误:无法解析“TestComponentBuilder”的所有参数
【发布时间】:2016-04-06 14:45:00
【问题描述】:

我正在尝试进行 Angular 2.0 组件测试。我使用this 帖子作为参考(Angular 2.0 dos 中还没有参考)。

这是我的测试:

import 'reflect-metadata';
import {
  it,
  describe,
  expect,
  inject,
  injectAsync,
  beforeEach,
  beforeEachProviders,
  TestComponentBuilder,
  ComponentFixture
} from 'angular2/testing';
import {Main} from './index';

describe('Main', () => {

  // provide our implementations or mocks to the dependency injector
  beforeEachProviders(() => [
    Main
  ]);

  it('should have title', inject([ Main ], (main) => {
    expect(main.title).toEqual('Hello Angular 2.0');
  }));

  it('should add item to list', injectAsync([TestComponentBuilder, Main], (tcb: TestComponentBuilder, main) => {
    return tcb.createAsync(Main).then((componentFixture: ComponentFixture) => {
      const element = componentFixture.nativeElement;
      expect(element.querySelectorAll('input').length).toBe(1);
    });
  }));
})

现在,我在运行这些测试时收到Cannot resolve all parameters for 'TestComponentBuilder' 错误。尝试将 TestComponentBuilder 添加到 beforeEachProviders 结果却出现不同的错误:

Cannot resolve all parameters for 'TestComponentBuilder'(?).

我做错了什么?

【问题讨论】:

    标签: javascript unit-testing angular


    【解决方案1】:

    您需要以这种方式设置提供者进行测试:

    (...)
    
    import {setBaseTestProviders} from 'angular2/testing';
    
    import {
      TEST_BROWSER_PLATFORM_PROVIDERS,
      TEST_BROWSER_APPLICATION_PROVIDERS
    } from 'angular2/platform/testing/browser';
    
    describe('Test suite', () => {
      setBaseTestProviders(TEST_BROWSER_PLATFORM_PROVIDERS,
                        TEST_BROWSER_APPLICATION_PROVIDERS);
    
      beforeEach(() => {
        (...)
      });
    
      (...)
    });
    

    这是一个示例 plunkr:https://plnkr.co/edit/oVBPsH?p=preview

    【讨论】:

    • 已经尝试过 - 收到错误:Cannot resolve all parameters for 'ResolvedMetadataCache'(?, ?)
    • 你用的是哪个版本的Angular2?
    • Beta13。有关系吗?
    • 我不这么认为。它应该适用于这个版本......我在我的答案中添加了一个示例 plunkr。
    猜你喜欢
    • 2017-11-13
    • 2016-11-18
    • 1970-01-01
    • 2017-04-24
    • 2016-07-29
    • 2018-01-07
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多