我正在做角度单元测试。TestBed.inject(service) 是否创建服务的新实例?我一直假设 TestBed.configureTestingModule() 创建了服务,并且通过注入我们只是访问了所创建服务的引用。
问问题
666 次
1 回答
0
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');
});
所以它类似于我们的应用程序代码,我们首先配置提供程序,然后将其注入我们的组件以获取该服务的实例。
于 2021-06-03T05:00:34.877 回答