タイトルが正しいかどうかわかりませんが、やりたいことは次のとおりです。
私はこのコードを持っています
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');
});
しかし、2 番目、3 番目、4 番目、5 番目の呼び出しをテストしたい場合。それ、どうやったら出来るの?Jasmine は Mockito のようなものを提供していますか? または、純粋なjavascriptでそれを行うにはどうすればよいですか?
どうもありがとう。