angularjsを使用してスタブ開発を行っています。私のスタブはサーバー上の JSON ファイルです。そのため、「スタブ」関数内で $http 呼び出しを行ってスタブを取得しています。ただし、$http は非同期であるため、whenGET は常に空のデータを返します (http が完了するのを待ちません)。この件に関する現在の質問を調べました。これらは、http 呼び出しの戻り値をスコープ データ モデルに割り当てる方法を提供します。httpリクエストが完了した後にデータを返したい。以下はコードです。
stubbedOstnApp.run(['$httpBackend','$http',function($httpBackend, $http){
var tempData;
var get = function (){
return $http.get('../test/data/program-categories.json').then(function(data){
tempData = data.data;
console.log(tempData);
return tempData;
})
};
get();
console.log(tempData);
$httpBackend.whenGET('lookup/program-categories').respond(tempData);
$httpBackend.whenGET(/^views\//).passThrough();
$httpBackend.whenGET(/^\.\.\/test\/data\//).passThrough();
}]);
基本的に、tempData が設定されるまで whenGET の行を待機させます。get 関数内の tempData は、 whenGET メソッドの実行後にコンソールに記録されます。