我在构造函数中有一个带有方法和构造函数注入的简单类:
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: (?).
这基本上说我必须在我的测试中处理构造函数参数。我该如何处理这个问题?
答案 0 :(得分:2)
您需要在类中将@Injectable()
装饰器视为需要注入其他服务的服务。
您的export
课程的ModeCheck
上方需要它。
如果没有服务类上的装饰器,则不会解析构造函数依赖项。实际上,建议您将该装饰器添加到服务中,无论您是否在构造函数中获取依赖项。这是一种明确的方式,可以告诉任何查看代码的人,该类是服务。