Angular单元测试-newService()和Testbed.inject()有什么区别?
创始人
2024-10-23 21:01:09
0

在Angular中编写单元测试时,在测试前准备好服务的实例通常是必要的。而有两种方法可以实现这个过程:使用new操作符创建新的服务实例或使用Testbed.inject()方法获得当前正在测试的服务实例。那么这两种方法有什么不同呢?

使用new Service()方法创建服务实例通常用于低级别的测试环境,此方法是手工实例化服务的一种方式。而在Angular中更推荐使用inject方式,因为Testbed可以自动为我们处理服务的依赖注入,确保考虑到了 providers 和 imports。

下面是一个使用 inject() 的例子:

import { TestBed, inject } from '@angular/core/testing';
import { DataService } from './data.service';

describe('DataService', () => {
  beforeEach(() => TestBed.configureTestingModule({
    providers: [DataService]
  }));

  it('should be created', inject([DataService], (service: DataService) => {
    expect(service).toBeTruthy();
  }));
});

在上面的代码中,我们首先使用TestBed.configureTestingModule()方法来创建测试模块并注入我们的服务。然后在执行'it”块时使用 inject() 方法来获取 DataService 的实例。在这里它会在我们的服务中创建所有依赖,之后就可以通过传入的方法来获取实例,以保证测试 Service 时我们的行为和实际应用程序中最接近。

使用 DataService 的引用(service)测试我们的实例是否被正确创建。

总而言之,虽然两种方法都可以获得服务的实例,但使用 Testbed.inject() 会更加推荐,因为它能够处理服务实例的所有依赖。

相关内容

热门资讯

重大消息!aapoker插件,... 重大消息!aapoker插件,hhpoker软件可以玩吗,其实是有挂(有挂总结)能透视中分为三种模型...
必备攻略!wepokerplu... 必备攻略!wepokerplus辅助,wepoker买钻石有用吗,确实存在有挂(详细教程);破解侠是...
重大消息!德普之星透视免费,w... 重大消息!德普之星透视免费,wepoker网页版透视方法,竟然是有挂(有挂存在)1、该软件可以轻松地...
总算明白!hhpoker辅助软... 总算明白!hhpoker辅助软件是真的么,wpk官网下载链接,本来存在有挂(有挂详情)1、很好的工具...
一分钟了解!德州局透视脚本下载... 一分钟了解!德州局透视脚本下载安装最新版本,智星德州插件2024最新版,都是有挂(有挂工具)小薇(辅...
必看攻略!hhpoker有没有... 必看攻略!hhpoker有没有作弊辅助,wepoker有没有插件,真是真的是有挂(有挂分享)1、该软...
必备攻略!wepoker究竟有... 必备攻略!wepoker究竟有没有透视,aapoker辅助插件工具,好像存在有挂(有挂秘籍)1、有没...
分享一款!xpoker辅助助手... 分享一款!xpoker辅助助手,wepoker怎么看底牌,其实真的有挂(有挂助手)1. 选牌创建新账...
交流学习经验!购买的wpk辅助... 交流学习经验!购买的wpk辅助在哪里下载,德普之星怎么开辅助,竟然真的是有挂(有挂总结)1、脚本辅助...
让我来分享经验!wepoker... 让我来分享经验!wepoker私人定制透视,拱趴游戏破解器,确实有挂(存在有挂)透视方法中分为三种模...