我有一些函数需要在指令/服务等中被隔离,指令/服务使用,但是 我不需要从这些指令/服务之外访问。例如:
angular.module('result')
.factory('directiveCreationService', ['$http', dirService]);
function dirService($http){
function helperFunc1(){...};
function helperFunc2(){...};
return {
// Both functions use helperFunc1, helperFunc2
usefulFunc1: function($http){...};
usefulFunc2: function($http){...};
};
};
我想单独测试helperFunc1和helperFunc2。测试usefulFunc1和usefulFunc2很简单:我只是在注入服务后直接在我的测试中访问它们,但是在那里 一种测试方式 helperFunc1,helperFunc2没有使它们可以被外界访问 (我不希望他们这样做,我希望他们保持私密,除了测试)? 我正在使用Jasmine。那么,Jasmine是否有可能以某种方式称呼它们 内在的功能?
我也对测试函数的一部分感兴趣,所以有没有办法在函数内部访问变量(本身就是函数)并进行测试而不实际为变量创建另一个函数并返回它?例如,我有一个很长的功能:
longFunc(){
// some d3.js code
var1 = svg1.smth.smth.smth.....
var2 = svg2.smth.smth.smth.....
}
我想在我的Jasmine测试中得到var1和var2而不实际暴露它们。显然,我需要这些var1,var2才能使我的longFunc工作,但不需要它们在我的代码中公开它们,因为没有其他外部代码需要它们。
是否有任何npm模块可以允许Jasmine执行此操作?有什么建议吗?
答案 0 :(得分:3)
不幸的是,你不能,因为他们在另一个功能范围内。您无法在代码中引用这些功能,Jasmine无法做任何魔术让您这样做。这为您提供了两个选项: