使用茉莉花在角度工厂中测试功能

时间:2014-08-18 10:17:57

标签: angularjs jasmine

我想在角度工厂内测试一个函数。

app.factory('customerSearchService', function ($http, $q) {

    var customerSearchByName = function (searchTokens) {
        //Some stuff
    };

    function createSearchStringFromArray(searchArray) {
        //Do some stuff
        return 'Processed string';
    }

    return {
        customerSearchByName: customerSearchByName
    };
});

我试图访问内部函数,这会导致函数的未定义消息:

describe("Services: customerSearchService", function () {
  beforeEach(module('AddressService'));

   var customerSearchService;

   beforeEach(inject(function($injector) {
       customerSearchService = $injector.get('customerSearchService');
   }));

   it("createSearchStringFromArray is a function", function () {
       expect(customerSearchService.createSearchStringFromArray).toBeFunction();
   });
});

我可以将createSearchStringFromArray添加到工厂函数中,但我希望它保持私密。

如何使用jasmine访问内部函数?

1 个答案:

答案 0 :(得分:0)

感谢runTarm的链接 (http://philipwalton.com/articles/how-to-unit-test-private-functions-in-javascript/) 我已经为测试创建了一种新的服务方法,该方法被grunt删除以进行部署。

Angular工厂:

function createSearchStringFromArray(searchTokensArray) {
    //Do some stuff
    return 'Processed string';
}

return {
    customerSearchByName: customerSearchByName,
    /* test-code */
    createSearchStringFromArray: createSearchStringFromArray
    /* end-test-code */
};

谢谢runTarm!