加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – Angular 2 TestBed with mocks

发布时间:2020-12-17 08:01:35 所属栏目:安全 来源:网络整理
导读:我正在尝试测试使用其他服务的组件.我想通过为服务提供模拟来隔离组件.在RC5之前,我可以简单地使用现在已弃用的addproviders,并将被下一个RC删除.相反,我必须使用TestBed.当我因某种原因提供模拟角度时,请继续寻找模拟所依赖的服务.并抛出DI异常.当我提供所
我正在尝试测试使用其他服务的组件.我想通过为服务提供模拟来隔离组件.在RC5之前,我可以简单地使用现在已弃用的addproviders,并将被下一个RC删除.相反,我必须使用TestBed.当我因某种原因提供模拟角度时,请继续寻找模拟所依赖的服务.并抛出DI异常.当我提供所有依赖项时,测试工作但我不想为每个测试套件重复自己.这打破了基本的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: [FormsModule,HttpModule]
    });
    TestBed.compileComponents().catch(error => console.error(error));


    // addProviders([
    //   DummyRestApiComponent,//   {provide: DummyRestApiService,// ]);
  });


  describe('Initializing',() => {

    beforeEach(async(() => {
      console.log('Compiling');
      TestBed.compileComponents().catch(error => console.error(error));
      console.log('Compiling again');
    }));

    it('should create an instance',async(() => {
        var fixture = TestBed.createComponent(DummyRestApiComponent);
        fixture.detectChanges();
        expect(fixture.debugElement.componentInstance).toBeTruthy();
      }
    ));

});

Angular 2.0.0-RC5

请注意,Patrick Ineichens回答使用了提议,已弃用.
providers: [provide(TodoService,{ useValue: this.service })]

应改为:

providers: [{provide:TodoService,useValue: this.service }]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读