Всем привет,
Есть ли где-нибудь в настоящее время документация о том, как использовать шпионские функции геттеров и сеттеров, описанные в # 1205? В противном случае я мог бы прочитать код и тесты и добавить их, если это необходимо. Я искал довольно много и нигде не нашел, я подумал, что спрошу. Спасибо.
Является ли это то , что вы искали?
Я также вижу это написанным, но оно кажется устаревшим (раньше было правдой):
Если вам нужно заглушить геттеры / сеттеры или нефункциональные свойства, вам следует использовать sandbox.stub
Теперь для этого можно использовать обычные заглушки.
Для заглушек, которые выглядят так. Я не знаю, есть ли что-нибудь для них в шпионских документах.
Хм ... На самом деле я не думаю, что шпионство было реализовано для геттеров / сеттеров. Я тоже не знаю почему. Реализация в основном будет примерно такой:
fn=Object.getOwnPropertyDescriptor(obj, prop).get
spy=sinon.spy(fn);
Object.defineProperty(obj, prop, { get: spy })
Хотите нанести удар?
Он реализован, и я этим пользуюсь. Я выяснил, как это сделать, просмотрев тесты в №1205. Я нашел здесь тесты.
Делается это так:
spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])
Это должно быть в документации? Или эта реализация пока еще не известна?
Было бы здорово, если бы это было задокументировано, спасибо!
Обязательно выбью.
Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время не было активности. Он будет закрыт, если больше не будет активности. Спасибо за ваш вклад.
Есть ли способ шпионить за ним без класса (непосредственно по объекту)?
У меня есть только объект в спецификации и я не могу требовать класс установщика геттера, есть ли другой способ?
@ mouse9 Непонятно, о чем вы спрашиваете, и как это связано с заглушкой / шпионажем за геттерами. Я тоже не понимаю, что вы подразумеваете под классами. Классы не имеют реального значения в javascript, и в большинстве случаев то, что вы считаете классами, не более чем объекты.
В любом случае мы стараемся, чтобы список проблем GitHub был аккуратным и сосредоточился на ошибках и обсуждениях функций. Этот билет выглядит как вопрос об использовании; опубликуйте его в StackOverflow и пометьте его sinon
, чтобы более широкое сообщество могло помочь ответить на ваши вопросы.
Если вы чувствуете, что ваша тема является проблемой для Sinon, пожалуйста, откройте новую заявку и следуйте инструкциям по сообщению о проблеме .
Для кода @loganhuskins :
spy = sinon.spy(className, 'nameOfGetterFunction', ['get'])
Обнаружено, что в утверждении действительно нужно утверждать на spy.get, например:
sinon.assert.calledOnce(spy.get);
Ранее утверждалось только о шпионаже и не работало.
Самый полезный комментарий
Он реализован, и я этим пользуюсь. Я выяснил, как это сделать, просмотрев тесты в №1205. Я нашел здесь тесты.
Делается это так:
Это должно быть в документации? Или эта реализация пока еще не известна?