Я пытаюсь заглушить супер-вызов с помощью sinon и es2016, но мне не очень повезло. Любые идеи, почему это не работает?ES2016 Class, Sinon Stub Constructor
Запуск узла 6.2.2, это может быть проблемой при реализации классов/конструкторов.
.babelrc файл:
{
"presets": [
"es2016"
],
"plugins": [
"transform-es2015-modules-commonjs",
"transform-async-to-generator"
]
}
Тест:
import sinon from 'sinon';
class Foo {
constructor(message) {
console.log(message)
}
}
class Bar extends Foo {
constructor() {
super('test');
}
}
describe('Example',() => {
it('should stub super.constructor call',() => {
sinon.stub(Foo.prototype, 'constructor');
new Bar();
sinon.assert.calledOnce(Foo.prototype.constructor);
});
});
Результат:
test
AssertError: expected constructor to be called once but was called 0 times
at Object.fail (node_modules\sinon\lib\sinon\assert.js:110:29)
at failAssertion (node_modules\sinon\lib\sinon\assert.js:69:24)
at Object.assert.(anonymous function) [as calledOnce] (node_modules\sinon\lib\sinon\assert.js:94:21)
at Context.it (/test/classtest.spec.js:21:18)
Примечание: этот вопрос, кажется, происходит только в конструкторах. Я могу отслеживать методы, унаследованные от родительского класса, без каких-либо проблем.
Интересно это не работает для меня: 'AssertionError: ожидается от 0 до равной 1' - я скопировал ваш пример выше. – klyd
Хм ... Интересно, обновлено с новыми изменениями .. Подумайте, что это обходной путь :) – anoop
Ваш новый пример, похоже, не работает с моим узлом 6.2.2 и babel es2016 preset. – klyd