繁体   English   中英

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 时,依赖注入系统会检查是否有针对令牌注册的提供者,如果是,则它会创建一个服务实例并返回它。 如果它没有找到该令牌,您将获得著名的

没有 ValueService 错误的提供者。

it('should use ValueService', () => {
  service = TestBed.inject(ValueService);
  expect(service.getValue()).toBe('real value');
});

所以它类似于我们的应用程序代码,我们首先配置提供程序,然后将其注入我们的组件以获取该服务的实例。

暂无
暂无

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

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