Angular测试机床TestBed

  •  用测试机床TestBed准备测试环境:
TestBed.configureTestingModule(
{
imports:[],
providers:[]
}
);

-imports引入需要的模块,如果有请求,则需要引入HttpClientTestingModule,使用HttpClientController拿到请求,并mock返回数据;

-providers注入相关的服务,互相依赖的服务都需要注入,使用了Http的需要引入HttpModule。

如果每个案例都需要准备测试环境,这个步骤可以放在beforeEach中。

  • 通过TestBed获取实例
var service =TestBed.get(ServiceToken);
var testingController = TestBed.get(HttpTestingController);

....

  • 针对请求的接口需要截获请求mock模拟返回数据
var req = httpClientContrller.expectOne({
    url:url,
    method:”POST”
});
req.flush(data);
  • 返回数据与期望数据比较

expect(response).toBe toEqual...()

  • 模拟报错

-req.error(new ErrorEvent(‘Network Error’,{message:”报错”}));

---------------------------更新---------------------------------

在实际开发过程中经常会遇到测试报错,No Provider for xxx。

原因如下,如果是对某个service测试,constructor如果引用到其他的service,需要在TestBed.configureTestingModule中imports相关的服务,或者直接在provider中注入相关的服务。注意是嵌套引用,如果引用的服务中又有其他的服务,都需要注入!!!!

一般可以这么做,新建一个TestServiceProviderModule然后在这个module中引入需要注入的服务。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值