以下代码
当我运行单元测试时,我收到错误 - 必须从注入上下文(例如构造函数、工厂函数、字段初始值设定项或与
EnvironmentInjector#runInContext
一起使用的函数)调用inject()。
如果您使用 TestBed,可以针对此错误提供大量帮助,但我们不使用。
我使用的是 Angular 14.2.4,它是一个字段初始值设定项,所以我不明白它?
TypeScript 文件
export class MyComponent implements OnInit, OnDestroy {
...
private _componentRegistryService = inject(ComponentRegistryService);
规格文件
fdescribe('DynamicComponent', () => {
let component: MyComponent;
let router: Router;
const _componentRegistryService = jasmine.createSpyObj('ComponentRegistryService', ['getComponentsByRoute']);
const _dynamicLoaderService = jasmine.createSpyObj('DynamicLoaderService', ['getUserComponentChoices']);
beforeEach(() => {
component = new MyComponent(router);
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
你必须使用TestBed。这样做相当简单,并且不会增加任何明显的开销。
component = TestBed.runInInjectionContext(() => new MyComponent(router));
这应该就是您需要做的全部。