Я пишу сценарии JS для программы под названием eSignal (торговая платформа). Сценарии выполняются внутри eSignal и используют API eSignal.
Я хочу написать тесты для моих сценариев, однако я не уверен, как я могу использовать Жасмин для имитации глобальных констант, которые предоставляет eSignal.
Например:
function myFunction(){
//....
drawShape(Shape.SQUARE)
//....
}
Для функции drawShape
я создаю шпиона для этого с помощью drawShapeRelative = jasmine.createSpy()
, однако я не могу придумать, как смоделировать глобальную константу Shape.SQUARE
. Поскольку eSignal знает о константе, я нигде не определяю ее в своем коде, поэтому Жасмин говорит, что 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 работает, но кажется, что это может быть единственным способом.