下面是控制器内部的功能,
self.myTest = myTest ();
function myTest (){
self.myval = true;
function innerFun(val) {
return val;
}
innerFun(2);
}
这是我的spec文件,我使用karma test runner测试角度代码,下面是spec文件中的代码。
it('should make a call inner fun and ret val ', function() {
spyOn(ctr, 'myTest ').and.callThrough();
// ?? How can i test function inside myTest
});
答案 0 :(得分:0)
通常,您只会测试您公开提供的方法。也就是说,你会设置条件,以便调用myTest()来触发条件并调用innerFun()
但是,我有过需要违反该规定的案例。在这些情况下,我需要使内部函数成为外部作用域的函数:
function innerFun(val){
return val;
}
function myTest(){
innerFun(2);
}
然后其他地方编写看起来像这样的代码:(我假设你使用jasmine作为你的测试平台)
if(window.jasmine){
self.innerFun = innerFun;
}
在使用Jasmine进行测试时会使innerFun公开。
最纯粹的,不喜欢这个答案,但有时你需要打破规则。