我有一些函数需要在指令/服务等指令/服务中使用,但我不需要从外部访问这些指令/服务。例如:Angular,d3.js,用Jasmine测试内部函数
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有可能以某种方式将这些内部函数称为这些内部函数吗?
我也有兴趣测试一个函数的一部分,所以有没有办法在函数内部访问一个变量(这本身就是一个函数),并且在没有为变量实际创建另一个函数的情况下执行测试并返回它?例如,我有一个很长的功能:
longFunc(){
// some d3.js code
var1 = svg1.smth.smth.smth.....
var2 = svg2.smth.smth.smth.....
}
我想在我的Jasmine测试中获得var1和var2而不实际暴露它们。显然,我需要这些var1,var2来处理我的longFunc,但不需要它们在我的代码中公开它们,因为没有其他外部代码需要它们。
是否有任何npm模块可以让Jasmine做到这一点?有什么建议么?
在这种情况下,我记得[测试接口,而不是实现](http://www.richardlord.net/blog/test-the-interface-not-the-implementation) – Sonata