如何在角度服务中测试变量

时间:2016-08-30 15:12:30

标签: angularjs unit-testing jasmine

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?

1 个答案:

答案 0 :(得分:0)

您已将foo设为私有变量,因此如果您想通过除使用getData函数以外的方式获取变量的值,您将尝试破坏自己的设计。

您真的只是想测试使用setData函数设置的内容是getData函数返回的内容,因此我会使用它们以便您测试API而不是强迫自己进入一个特定的内部实现,这将使你的测试变得脆弱。

作为旁注,您应该从getData函数中删除该参数,因为它没有被使用。