【发布时间】:2015-12-18 15:36:04
【问题描述】:
我正在尝试使用 karma 和 jasmine 测试我的 $http 请求。我制作了一个控制器并注入了一项服务。在服务中我调用 $http 服务。我需要如何测试该服务测试这个服务这是我的控制器。
angular.module('app',[]).controller('first',function($scope,data){
$scope.name='test';
data.getData().then(function(data){
console.log(data);
})
}).factory('data',function($http){
return{
getData:getData
}
function getData(){
return $http.get('data.json').success(successCall).error(errorcallback)
}
function successCall(data){
return data
}
function errorcallback(data){
return data
}
})
这里是笨蛋 http://plnkr.co/edit/POryyDUc8bvvfvI5Oap7?p=preview
我是这样开始的
describe('http controller test', function () {
var $rootScope,
$scope,
controller;
beforeEach(function(){
module('app') ;
inject(function($injector){
$rootScope = $injector.get('$rootScope') ;
$scope=$rootScope.$new();
controller =$injector.get('$controller')('first',{$scope:$scope})
})
})
describe('Init value',function(){
it('check name value',function(){
expect($scope.name).toEqual('test');
})
})
it('it should be true',function(){
expect(true).toBeTruthy();
})
})
你能告诉我当控制器中存在服务依赖时如何编写测试吗?如何在 jasmine 中测试 $http 请求?在我的控制器中有一个服务的依赖项。如何在我的测试文件中注入它?
【问题讨论】:
-
如果要测试服务和对服务器的请求,使用 $httpBackend:docs.angularjs.org/api/ngMock/service/$httpBackend
-
是的,我学过..但我懂一点..你能换个例子吗
-
请使用这个工具jsfiddle.net/eitanp461/E64Se
标签: angularjs angularjs-directive angularjs-scope jasmine karma-jasmine