繁体   English   中英

嵌套服务的angular2单元测试

[英]angular2 unit test of nested services

我正在尝试为服务编写一些单元测试:

export class Service1 {
...
    public constructor(service2: Service2, service3: Service3) {}
...
}

其中Service2包含Service3:

export class Service2 {
...
    public constructor(service3: Service3, stringa: string) {}
...
}

我以一种非常糟糕的方式开始测试,例如:

 it("check XXX", () => {
   let service3: Service3= new Service3();
   let service2: service2= new service2(service3, "stringa");
   let service1: Service1 = new Service1(service2, service3);
   expect(X).toEqual(X);
 });

但是现在,我正在使用beforeEachProviders,这会发生什么:

  beforeEachProviders(() => {
    return [
      provide(Service2, { useclass: MockService2}),
      provide(Service3, { useclass: MockService3}),
      provide('stringa', { useValue: "stringa"}),
      Service1
    ];
  });

  it('check XXX ', inject(
  [Service2, Service3], (service2: Service2, service3: Service3) => {
    expect(true).toEqual(true);
  }));

是:

  Failed: No provider for String! (Service2-> String).

有人可以帮我吗?

提前致谢。

如果要从依赖项注入中注入字符串值,则需要使用@Inject装饰器:

export class Service2 {
  ...
  public constructor(service3: Service3, @Inject('stringa') stringa: string) {}
  ...
}

实际上,如果您不使用@Inject装饰器,则注入默认情况下依赖于参数类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM