茉莉花-如何模拟未声明的全局常量

时间:2019-04-08 15:06:38

标签: javascript unit-testing testing jasmine mocking

我正在为名为eSignal(交易平台)的程序编写JS脚本。这些脚本在eSignal内部运行,并使用eSignal API。

我想为脚本编写测试,但是我不确定如何使用 Jasmine 来模拟eSignal提供的全局常量。

例如:

function myFunction(){
    //....
    drawShape(Shape.SQUARE)
    //....
}

对于drawShape函数,我使用drawShapeRelative = jasmine.createSpy()为此创建了一个间谍,但是我无法找到模拟全局常量Shape.SQUARE的方法。因为eSignal知道常量,所以我没有在代码中的任何地方定义它,所以Jasmine说Shape没有定义。

在我的脚本中,我可以运行仅在测试运行时执行的代码,并且仅当脚本在eSignal中运行时才使用以下代码执行

var shapeSQUARE;

if ( typeof module !== 'undefined' && module.hasOwnProperty('exports') ){
    // Run with test 
}
else{
    // Run with eSignal
    var shapeSQUARE = Shape.SQUARE
}

然后

drawShape(shapeSQUARE);

这解决了我的问题,但我希望采用一种更为优雅的方式来处理此问题,而不是必须为我的常量定义占位符,然后在eSignal运行时再进行分配,但这似乎是唯一的方法。

0 个答案:

没有答案