gpt4 book ai didi

testing - 使用 angularjs 模拟而不实际模拟任何东西

转载 作者:行者123 更新时间:2023-11-28 19:45:17 24 4
gpt4 key购买 nike

我正在为我们的应用程序编写一些测试,我已经包含了 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;
});
});

这可能会破坏其他东西,但它可以让我测试我需要测试的东西,并且不会影响生产应用程序,所以我觉得没问题。希望将来会有一种内置的方法来执行此操作。

关于testing - 使用 angularjs 模拟而不实际模拟任何东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12683586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com