Angular TestBed.inject
Angular TestBed.inject
我正在进行 angular 单元测试。 TestBed.inject(service) 是否创建服务的新实例?
我一直假设 TestBed.configureTestingModule() 创建了服务,通过注入我们只是访问了创建服务的引用。
TestBed.configureTestingModule() 帮助您配置供应商。配置提供者意味着你让 Angular 依赖注入系统知道这个依赖,稍后它可以在通过依赖注入令牌请求时注入到组件中。在下面的示例中,依赖项和令牌是 ValueService。
TestBed.configureTestingModule({ providers: [ValueService] });
稍后,您可以使用 TestBed.inject 在测试中使用 ValueService。当你说 TestBed.inject Angular 依赖注入系统检查是否有针对令牌注册的提供者,如果是,那么它会创建一个服务实例并 returns 它。如果它没有找到那个令牌,你会着名的
No provider for ValueService error.
it('should use ValueService', () => {
service = TestBed.inject(ValueService);
expect(service.getValue()).toBe('real value');
});
所以它类似于我们的应用程序代码,我们首先配置提供程序,然后将其注入我们的组件以获取该服务的实例。
我正在进行 angular 单元测试。 TestBed.inject(service) 是否创建服务的新实例? 我一直假设 TestBed.configureTestingModule() 创建了服务,通过注入我们只是访问了创建服务的引用。
TestBed.configureTestingModule() 帮助您配置供应商。配置提供者意味着你让 Angular 依赖注入系统知道这个依赖,稍后它可以在通过依赖注入令牌请求时注入到组件中。在下面的示例中,依赖项和令牌是 ValueService。
TestBed.configureTestingModule({ providers: [ValueService] });
稍后,您可以使用 TestBed.inject 在测试中使用 ValueService。当你说 TestBed.inject Angular 依赖注入系统检查是否有针对令牌注册的提供者,如果是,那么它会创建一个服务实例并 returns 它。如果它没有找到那个令牌,你会着名的
No provider for ValueService error.
it('should use ValueService', () => {
service = TestBed.inject(ValueService);
expect(service.getValue()).toBe('real value');
});
所以它类似于我们的应用程序代码,我们首先配置提供程序,然后将其注入我们的组件以获取该服务的实例。