【发布时间】:2015-11-06 17:03:37
【问题描述】:
我有一些我想在指令/服务等中隔离的功能,这些指令/服务使用,但是 我不需要从这些指令/服务之外访问。例如:
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。测试有用的Func1和有用的Func2很容易:我只是在注入服务后直接在我的测试中访问它们,但是那里 一种测试方法 helperFunc1, helperFunc2 不让外部世界访问它们 (我不希望他们这样做,我希望他们除了测试之外保持私密)? 我正在使用茉莉花。那么,茉莉花中是否有可能以某种方式调用这些 内部函数?
我也有兴趣测试函数的一部分,所以有没有办法访问函数内部的变量(本身就是函数)并进行测试,而无需实际为变量创建另一个函数并返回它?比如我有一个很长的函数:
longFunc(){
// some d3.js code
var1 = svg1.smth.smth.smth.....
var2 = svg2.smth.smth.smth.....
}
我想在 Jasmine 测试中获取 var1 和 var2 而不实际暴露它们。显然,我需要这些 var1、var2 才能让我的 longFunc 工作,但不需要它们在我的代码中公开它们,因为没有其他外部代码需要它们。
是否有任何 npm 模块可以让 Jasmine 做到这一点?有什么建议吗?
【问题讨论】: