2016-08-30 36 views
1
angular.module('myApp').factory('someService', function(){ 
    var foo = {}; // can not get access to this variable 

    function setData(data){ 
     foo.data = data; 
    } 

    function getData(){ 
     return foo.data; 
    } 

    return { 
     getData: getData, 
     setData: setData 
    } 
}) 

如何測試這兩個函數的設置和從服務中的局部變量獲取一些數據?如何在角度服務中測試變量

describe('someService', function() { 
    var someService, 
     foo ; 

    beforeEach(module('myApp')); 
    beforeEach(inject(function (_someService_) { 
     someService= _someServicee_; 
    })); 

    it('should return bundle id', function() { 
     expect(someService.setData('test')) // foo.data toBe 'test' 
    }); 
}); 

如何訪問foo var的服務?

回答

0

你已經使foo成爲一個私有變量,所以如果你想通過除了使用getData函數以外的其他方法來獲取變量的值,你會試圖破壞你自己的設計。

你真的只是想測試你使用setData函數設置的是getData函數返回的內容,所以我會使用這些來測試API,而不是強迫自己進入特定的內部的實現會讓你的測試變得脆弱。

作爲一個方面說明,您應該從getData函數中刪除參數,因爲它沒有被使用。