Я выполняю модульное тестирование с Chai & sinon и хочу, чтобы мой тест не прошел при изменении полученных параметров функции.
Давайте предположим, что у нас есть:
function a(param1){
... db and other sync functions called
};
С кучей из написанных тестов, озвучивание «функции а» и разрешение данных:
it('Should assert other specific logic', test(async function() {
stub(a).resolves(someValue);
await a(val1);
}));
В какой-то момент моя «функция а» модифицируется для получения дополнительного параметра.
function a(param1, param2){
... db and other sync functions called
};
Я хочу, чтобы все тесты, которые заглушают эту функцию, не выполнялись , поскольку они вызываются с 1 параметром, а фактическая функция получает 2; (без необходимости Утверждая количество параметров, полученных заглушкой, я добиваюсь этого, вызывая .length функции для заглушки, а затем утверждая с помощью заглушенных аргументов)
Я знаю, что это можно сделать с помощью шпионов (просто позволяя язык генерирует недопустимые аргументы), но логика c внутри «функции а» - asyn c, и мне пришлось бы заглушить все функции, вызываемые «а», в каждом тесте используется «а». Я хотел бы оставить «функцию А» в качестве черного ящика.
Есть ли более приемлемый способ сделать это?