【发布时间】:2015-03-30 09:30:49
【问题描述】:
我是 karma-jasmine 测试的新手。我编写了一项服务,它使 http get 调用 api 并返回数据对象。
app.service('service_name',['$http',function($http){
this.getData=function(urlPath){
var Data = $http.get(path).success(function(data){
var getData = data;
console.log("getData success");
return getData;
}).error(function(response){
var getData = response;
console.log("getData error");
return getData;
});
console.log(Data);
return Data;
};
}]);
从控制器我将 url 传递给此服务函数并使用 .then() 回调获取数据;
service_name.getData(url).then(function(data){
console.log('expected data: ', data);
});
【问题讨论】:
-
当我在任何浏览器上运行我的应用程序时,所有 ajax 调用都工作正常。这些 ajax 调用是在控制器的“加载”时触发的。但是当我运行我的业力测试配置时,这些控制器被加载但所有 ajax电话被跳过。
-
您展示的是服务代码,而不是控制器。你想测试什么?如果你想捕捉来自控制器的触发调用,你必须实例化——nathanleclaire.com/blog/2013/12/13/…
-
service_name.getData(url).then(function(data){ console.log('expected data: ', data); });这段代码是写在控制器里面的……这就是我提到控制器的原因
-
请展示您的测试...或更好的方法,请分叉此代码jsfiddle.net/krzysztof_safjanowski/sDh35 并为其实施您的服务和测试