При использовании любого метода песочницы в песочнице по умолчанию restore()
не восстанавливает моки или шпионы должным образом. Минимальный репро на Sinon v5.0.2:
const sinon = require('sinon');
const myApi = {
someMethod() {
console.log('test method!');
}
};
sinon.stub(myApi, 'someMethod');
sinon.restore();
sinon.stub(myApi, 'someMethod');
// TypeError: Attempted to wrap someMethod which is already wrapped
Похоже, что при вызове extend
в lib/sinon.js
незащищенный экспорт stub/spy/etc.
из apiMethods
конечном итоге затеняет методы песочницы, и поэтому restore()
ничего не делает. Документы и исходный код lib/sinon.js
похоже, предполагают, что это предполагаемое использование.
Я тестировал только stub
и spy
, но я ожидал, что любые другие теневые методы также не будут работать должным образом.
Я запускал эти тесты на Node v8.9.4 и Chrome 66.0.3359.117 через Karma / Chromedriver, хотя эта проблема, похоже, не связана с окружающей средой.
Спасибо за подробный отчет об ошибке 👍
Это было исправлено в [email protected]
Спасибо, что обратились к этому так быстро! Очень признателен :)
С хорошими отчетами об ошибках большинство ошибок легко устранить.
Самый полезный комментарий
С хорошими отчетами об ошибках большинство ошибок легко устранить.