测试 – 使用angularjs模拟而不实际模拟任何东西
发布时间:2020-12-17 07:24:55 所属栏目:安全 来源:网络整理
导读:我正在为我们的应用程序编写一些测试,并且我已经包含了 angularjs-mocks.js,所以我可以使用它附带的漂亮的dsl函数. 但是我不想实际模拟$http请求,因为我正在将这个应用程序与客户端的后端集成在一起,而后端不断变化,我想测试真实的响应. 在这种情况下,使用真
我正在为我们的应用程序编写一些测试,并且我已经包含了
angularjs-mocks.js,所以我可以使用它附带的漂亮的dsl函数.
但是我不想实际模拟$http请求,因为我正在将这个应用程序与客户端的后端集成在一起,而后端不断变化,我想测试真实的响应. 在这种情况下,使用真正的http后端的最佳(最简单)方法是什么? 编辑: 我找到了一个潜在的解决方案,就是使用它: $httpBackend.whenPOST(/.*/).passThrough() 但正如我在下面提到的那样,它不起作用,可能会坏掉?我收到此错误: Error: Unexpected request: POST /some/url/here No more request expected 我在这里开了一个问题:https://github.com/angular/angular.js/issues/1434
我找到了一个快速而又脏的问题解决方案:注释掉$httpBackend被覆盖的行(angular-mocks-1.0.2.js中的1365).
angular.module('ngMock',['ng']).provider({ $browser: angular.mock.$BrowserProvider,$exceptionHandler: angular.mock.$ExceptionHandlerProvider,$log: angular.mock.$LogProvider,//$httpBackend: angular.mock.$HttpBackendProvider,$rootElement: angular.mock.$RootElementProvider }).config(function($provide) { $provide.decorator('$timeout',function($delegate,$browser) { $delegate.flush = function() { $browser.defer.flush(); }; return $delegate; }); }); 这可能会打破别的东西,但它让我测试我需要测试的东西,并且不会影响生产应用程序,所以对我来说没关系.希望将来会有一种内置的方式来做到这一点. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |