`sinon.stub (). onCall ()` возвращает только последнюю функцию модульного теста - PullRequest
0 голосов
/ 10 июля 2019

У меня есть фрагмент кода, для которого я пишу модульные тесты, и я пытаюсь отключить некоторые внешние функции, чтобы я мог проверить его должным образом.

Функция, которую я пытаюсь отключитьявляется геттером, с которым я не привык работать (я заглушаю библиотеку, написанную кем-то другим).

Я проверяю правильность 'порядка', учитывая список строк, которыепередается в класс Parser, который равен 1: 1 с данной строкой.

ParserResultStub.onCall(0).get( () => { return parsedString1 } )
                .onCall(1).get( () => { return parsedString2 } )
                .onCall(2).get( () => { return parsedString1 } );

const response = await Parser.createItemIdList( [string1, string2, string1] );

Ожидаемая функциональность заключается в том, что, учитывая список строк, я ожидаю, что они будут последовательно проанализированы там, где получатель длякаждый экземпляр проанализированной строки 'class' должен возвращать правильно проанализированную строку.

К сожалению, это не так.Я обнаружил, что любое указанное значение 'last' возвращается все три раза.Например, если я изменил порядок onCall() с таким, чтобы onCall(1) был последним, заглушка каждый раз возвращает parsedString2.

Я относительно новичок в экосистеме JavaScript, поэтому, возможно,Между тем, как работает sinon / onCall и тем, что я пытаюсь сделать, существует пробел в знаниях.

Буду признателен за любые указания о том, как сделать это правильно !!

...