Жасмин - как издеваться над необъявленными глобальными константами - PullRequest
0 голосов
/ 08 апреля 2019

Я пишу сценарии 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 работает, но кажется, что это может быть единственным способом.

...