我正在测试的服务具有此功能(例如):
doSomething : function(userID,boolean){
var t = otherService.getSomething();
var params = somedata;
var deferred = $q.defer();
if (boolean){
Restangular.one("users",userID).post("copy",params).then(function(data){...
我只是想在 Restangular 上做一个间谍,看看它是否得到了正确的参数、端点等来使用。
所以我做了一个restangular模拟:
mockRestangular = {
one:function(){return this}
},
post:function(){
},
all:function(){
}
};
},
//also tried:
// one: function(){return {post:function(){}};}
};
但我不能在模拟中的嵌套帖子上设置茉莉花间谍:
spyOn(mockRestangular.one,'post')
我明白了post() method does not exist
并且函数调用也失败了
someService.doSomething(params)
因为它可以找到 post 方法。
请注意,我需要将 post 方法嵌套到 one 方法中。如果我只是把一个变成一个对象,它会因缺少one
方法而失败。
猜猜我错过了一些明显的东西,但我整个早上都在思考这个问题并且完全失败了
编辑:
再加andCallThrough()
上间谍,所有的事情都朝着正确的方向解决了。如果有一天有人会来看,我会更新答案。