Описание проблемы
У меня есть класс, который расширяет другой класс, и когда я пытаюсь заглушить унаследованный метод в моем тестовом коде и запускаю функцию init для тестируемого класса, ' это "не определено. Заглушка sinon случайно не связывается с 'this'?
Код класса:
import Class2 from 'module/Class2';
export const Class1 = Class2.extend({
init: function (options) {
Class1.inherited('init', this, arguments);
this.item = {};
}
})
Код модульного теста:
import tap from 'tap';
import sinon from 'sinon';
const proxyquire = require('proxyquire').noCallThru();
const class1Stub = sinon.stub().callsFake(function () {
return {
inherited: sinon.stub() // I believe this is where 'this' becomes undefined
}
});
const Class1Mock = proxyquire('./Class1', {
'module/Class2': { extend: class1Stub },
});
tap.test('Class1', t => {
const init = class1Stub.getCall(0).args[0].init;
init(); // Error generated here
t.done();
});
Я попытался использовать приведенный ниже пример функции returnsThis
sinon, но, похоже, это не сработало.
const class1Stub = sinon.stub().callsFake(function () {
return {
inherited: sinon.stub() // I believe this is where 'this' becomes undefined
}
}).returnsThis();
Произошла ошибка
не может установить свойство не определено