使用业力测试函数内部的函数

时间:2016-02-18 13:34:54

标签: angularjs jasmine karma-runner karma-jasmine

下面是控制器内部的功能,

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
     });

1 个答案:

答案 0 :(得分:0)

通常,您只会测试您公开提供的方法。也就是说,你会设置条件,以便调用myTest()来触发条件并调用innerFun()

但是,我有过需要违反该规定的案例。在这些情况下,我需要使内部函数成为外部作用域的函数:

function innerFun(val){
    return val;
}

function myTest(){
   innerFun(2);
}

然后其他地方编写看起来像这样的代码:(我假设你使用jasmine作为你的测试平台)

if(window.jasmine){
    self.innerFun = innerFun;
}

在使用Jasmine进行测试时会使innerFun公开。

最纯粹的,不喜欢这个答案,但有时你需要打破规则。