$httpBackend与AngularJS/Jasmine-为什么要模拟响应?
AngularJS教程说,当使用$httpBackend时,应该模拟响应。我不确定的是,当我可以使用$http发出请求并检索“真实”数据时,为什么我要模拟对API的请求?然后,我可以在实际响应上运行测试,这允许检查来自API的数据响应是否已更改(无论出于什么原因)。但是,如果我模拟响应并且API数据发生更改,那么我的模拟响应将与实际响应不同。因此,使测试不正确。Jasmine是一个单元测试框架 如果直接使用$httpBackend与AngularJS/Jasmine-为什么要模拟响应?,angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,AngularJS教程说,当使用$httpBackend时,应该模拟响应。我不确定的是,当我可以使用$http发出请求并检索“真实”数据时,为什么我要模拟对API的请求?然后,我可以在实际响应上运行测试,这允许检查来自API的数据响应是否已更改(无论出于什么原因)。但是,如果我模拟响应并且API数据发生更改,那么我的模拟响应将与实际响应不同。因此,使测试不正确。Jasmine是一个单元测试框架 如果直接使用$http,则不会测试唯一的组件,而是同时测试API。如果API关闭,测试将失败 单独测试
$http
,则不会测试唯一的组件,而是同时测试API。如果API关闭,测试将失败
单独测试组件会更干净
更多信息:
允许您尝试API不提供的测试用例。因此,您可以构建健壮的应用程序$httpbackend
可能需要时间才能解决,而$http
只需询问以下问题即可解决所有请求:$httpbackend
httpBackend.flush();
等等。你说得对。有(至少)三种类型的测试: