相关疑难解决方法(0)

Angular 2 TestBed with mocks

我正在尝试测试使用其他服务的组件.我想通过为服务提供模拟来隔离组件.在RC5之前,我可以简单地使用addproviders现在已经弃用的,并且将被下一个RC删除.相反,我必须使用TestBed.当我因某种原因提供模拟角度时,请继续寻找模拟所依赖的服务.然后抛出一个DI exception.当我提供所有依赖项时,测试工作,但我不想为每个测试套件重复自己.这打破了基本的OO原则.我的测试套件:

describe('Component: DummyRestApi', () => {

  class DummyRestApiTestService {

    GetAll() {

      return Rx.Observable.create(observer => {

        let data:Data[] = [];

        data.push({
          id: 0,
          data: 'data'
        });

        observer.next(data);
        observer.complete();

      });
    }

    Add(data) {
    }
  }
  let fixture;
  let myMockWindow:Window;
  // ToDo use the mocks
  beforeEach(() => {
    myMockWindow = <any> {location: <any> {hostname: '127.0.0.1'}};
    TestBed.configureTestingModule({
      declarations: [DummyRestApiComponent],
      providers: [
        // ServerAddressResolverService,
        DummyRestApiComponent,
        // ConfigurationService,
        {provide: DummyRestApiService, useClass: DummyRestApiTestService},
        // {provide: Window, useValue: myMockWindow}
      ],
      imports: …
Run Code Online (Sandbox Code Playgroud)

unit-testing mocking testbed angular2-providers angular

7
推荐指数
2
解决办法
9500
查看次数

如何修复Angular 2中的"无法读取null的注入器属性"错误?

此问题描述了beforeEachProviders在不推荐使用该函数后如何更新Angular 2 .

但是这样做了,我得到了错误 Cannot read property 'injector' of null

我的测试相对基础:

import { inject, addProviders } from '@angular/core/testing';
import { MyComponent } from './my.component';

describe('Foo', () => {
    beforeEach(() => {
        addProviders([{
            provide: MyComponent,
            useClass: MyComponent
        }]);
    });

    it('foo', inject([MyComponent], (e: MyComponent) => {
        expect(true).toEqual(true);
    }));
});
Run Code Online (Sandbox Code Playgroud)

unit-testing angular

3
推荐指数
1
解决办法
2786
查看次数