我不确定我写的标题是否正确,但这就是我想要做的。
我有这个代码
var callback = function(result) {
if(result.count < 5) {
msg_id = result.msg_id;
MovieService.getMovies(msg_id, result.count).get(callback, error);
}
if(result.movies.length !== 0) {
setDataToDisplay(result);
}
if(result.count === 5) {
$scope.loading = false;
}
}
MovieService.getMovies(msg_id, 0).get(callback, error);
基本上,当用户第一次进来时,MovieService 将被调用并被调用,直到count
等于 5 次。这就像一个递归循环。现在如果我想测试这段代码,我不知道如何在 Jasmine 中进行链式存根。我可以在 Mockito 中做类似的事情。
到目前为止,这是我的测试。
it("should give me the lot of movies", function() {
var movie1 = new MovieBuilder().withTweetId('8').build();
var movie2 = new MovieBuilder().withId('3812').withTweetId('8').build();
var movie3 = new MovieBuilder().withId('3813').withTweetId('8').build();
var movie4 = new MovieBuilder().withId('3814').withTweetId('8').build();
movieService = {
getMovies : function() {
return {
get : function(callback, error) {
callback(
{
'msg_id' : '8',
'count' : '5',
'movies' : [movie1, movie2, movie3, movie4]
});
}
}
}
}
ctrl = controller('MovieTwitterCtrl', {$scope : scope, MovieService : movieService});
expect(scope.movie_groups[0].length).toBe(4);
expect(scope.msg_id).toBe('8');
});
但是如果我想测试第二个、第三个、第四个和第五个调用。我怎么做?Jasmine 是否提供类似 Mockito 的产品?或者我如何在纯javascript中做到这一点?
非常感谢。