如何使用构造函数内的参数测试angular2类/服务?

时间:2018-01-07 16:24:03

标签: javascript angular unit-testing karma-jasmine

我在构造函数中有一个带有方法和构造函数注入的简单类:

import { WindowService } from '../path_to_serivce';

    export class ModeCheck {

      constructor(private windowRef: WindowService) { }

      public isMode(): boolean {
       logic ...
      }

    }

和我的拦截器测试spec.ts类(假设导入在上面)

describe('Interceptor', () => {

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [HttpClientTestingModule],
            providers: [
                {
                    provide: HTTP_INTERCEPTORS,
                    useClass: ModeInterceptor,
                    multi: true
                }, ModeCheck]
          });
    }); 


 });

我得到的错误是Error: Can't resolve all parameters for ModeCheck: (?).这基本上说我必须在我的测试中处理构造函数参数。我该如何处理这个问题?

1 个答案:

答案 0 :(得分:2)

您需要在类中将@Injectable()装饰器视为需要注入其他服务的服务。

您的export课程的ModeCheck上方需要它。

如果没有服务类上的装饰器,则不会解析构造函数依赖项。实际上,建议您将该装饰器添加到服务中,无论您是否在构造函数中获取依赖项。这是一种明确的方式,可以告诉任何查看代码的人,该类是服务。