gpt4 book ai didi

angularjs - $httpBackend.whenGET() passThrough() 未定义

转载 作者:行者123 更新时间:2023-12-04 02:23:09 25 4
gpt4 key购买 nike

我想通过我的一些 http 请求而不是在我的单元测试中模拟它们,但是当我尝试调用 passThrough() 方法时,会抛出缺少方法的错误:

"TypeError: Object # has no method 'passThrough'".



有人知道我该如何解决吗?

有我的代码:
'use strict';

describe('Controller: MainCtrl', function () {

// load the controller's module
beforeEach(module('w00App'));

var scope, MainCtrl, $httpBackend;

// Initialize the controller and a mock scope
beforeEach(inject(function(_$httpBackend_, $rootScope, $controller) {
$httpBackend = _$httpBackend_;
$httpBackend.expectGET('http://api.some.com/testdata.json').passThrough();


scope = $rootScope.$new();
MainCtrl = $controller('MainCtrl', {
$scope: scope
});
}));
});

最佳答案

如果你想在开发过程中模拟你的后端,只需安装 angular-mocks在主 html 文件中,将其添加为应用程序中的依赖项 (angular.module('myApp', ['ngMockE2E']))然后模拟您需要的请求。

例如;

angular.module('myApp')
.controller('MainCtrl', function ($scope, $httpBackend, $http) {
$httpBackend.whenGET('test').respond(200, {message: "Hello world"});
$http.get('test').then(function(response){
$scope.message = response.message //Hello world
})
});

但是请注意,添加 ngMockE2E 将需要您设置路由,以防您通过 AngularJS 路由进行设置。

例子;
angular.module('myApp', ['ngMockE2E'])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
})
.run(function($httpBackend){
$httpBackend.whenGET('views/main.html').passThrough();
})

关于angularjs - $httpBackend.whenGET() passThrough() 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18173033/

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