我正在为名为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运行时再进行分配,但这似乎是唯一的方法。