我想在角度工厂内测试一个函数。
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访问内部函数?
答案 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!