Заглушка метода в экземпляре класса с помощью sinon - PullRequest
0 голосов
/ 06 июня 2018

Я новичок в тестировании с помощью sinon и пытаюсь научиться работать с заглушкой.Я пытаюсь протестировать функцию, которая получает объект запроса, получает некоторые свойства из него и передает его экземпляру класса, который выполняет запрос get для внешней службы.

Пример:

exports.getMyThings = (req) => {
  const reqOpts = {
    qs: req.query
  };

  return apiInstance.get(req.route, reqOpts);
};

В файле, куда я экспортирую свою функцию getMyThings, создается экземпляр apiInstance.

Я пытаюсь отключить метод apiInstance.get, чтобы я мог проверить, что мойgetMyThings функция работает правильно и передает ей правильные аргументы.

Я попытался написать заглушку, импортировав класс в мой тестовый файл, а затем создав экземпляр заглушки:

const MyClass = require('.../blahblah)
const apiInstance = sinon.createStubInstance(MyClass);

и

const apiInstance = new MyClass();
apiInstance.get = sinon.stub();

, новнутри моей функции getMyThings метод apiInstance.get не является обернутым - это оригинал.Обернутый экземпляр существует только внутри моего теста.Это имеет смысл, но я не уверен, как обойти это.Любые идеи приветствуются.

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете использовать,

const returnMe = () => 'sinon rocks!';
sinon.stub(apiInstance, 'get').callsFake(returnMe);


result = apiInstance.get();
// Do asssertion for result to equal to the returnMe();

Надеюсь, это поможет.

...