2014-01-19 47 views
1

我有一個外部json文件中的模擬數據,我想可用於在Angular.js中的Jasmine單元測試。不幸的是,我沒有批准在我的開發環境中運行node.js,所以通常的業力示例不適用於我。加載JSON文件的茉莉花測試與angular.js

我曾嘗試:

beforeEach(inject(function ($injector, $http) { 
    console.log('this gets called'); 
    $http.get('/mockData/surveySetup.json').success(function (data) { 
      console.log('this never gets called'); 
     }).error(function() { 
      console.log('this never gets called'); 
     }); 
})); 

的$ http.get外的的console.log被調用,但裏面$ http.get的那些從來沒有火,我看不到的通話在Chrome的網絡選項卡中的json文件。

我能做些什麼來加載這個文件在我的測試中使用?在一天結束時,我只需要訪問.json文件中的數據,以便在單元測試中引用它。

在此先感謝。

回答

1

我發現我需要將我的.json文件轉換爲Angular服務(實際上是一個Angular常量用於我的目的),然後我的外部文件很容易在我的測試,如下所示:

var setupData = $injector.get('SetupData'); 
$httpBackend.whenGET('/surveySetup').respond(setupData); 
$httpBackend.flush(); 
+2

我不明白你的意思是「將我的.json文件轉換爲Angular服務」 – imbalind

+0

可以請你詳細說明你做了什麼 –

+0

@imbalind,Rishabh Jain,你需要帶上你的靜態.json文件並將它轉爲一個常規的JavaScript對象。然後將其作爲Angular常量提供給您的應用程序。 – Brett

0

不知道到底要實現什麼功能,但通常可以使用$ httpBackend進行配置,該配置可以配置爲模擬來自任何代碼的實際請求(您可能還需要在此情況下使用URL語法進行設置但無論如何,這是單元測試的常見情況,在這種情況下,您不需要閱讀JSON文件,只需在該URL的$ httpBackend配置內提供JS對象,並在調用此URL時$ httpBackend將返回指定的對象。看看:$httpBackend

+1

謝謝,但我已經有我在其他地方使用的文件。我試圖避免重複代碼。我真的需要能夠從文件加載數據。 – Brett