Ответ 1
Вы можете использовать SinonJS для создания stub, чтобы предотвратить выполнение реальной функции.
Например, заданный класс A:
import B from './b';
class A {
someFunction(){
var dependency = new B();
return dependency.doSomething();
}
}
export default A;
И класс B:
class B {
doSomething(){
return 'real';
}
}
export default B;
Тест может выглядеть так:
describe("Class A", () => {
var InstanceOfA;
beforeEach(() => {
InstanceOfA = new A();
});
it('should call B', () => {
sinon.stub(B.prototype, 'doSomething', () => 'mock');
let res = InstanceOfA.someFunction();
sinon.assert.calledOnce(B.prototype.doSomething);
res.should.equal('mock');
});
});
Затем вы можете восстановить функцию при необходимости с помощью object.method.restore();
:
var stub = sinon.stub(объект, "метод" );
Заменяет object.method на заглушка. Исходную функцию можно восстановить, позвонивobject.method.restore();
(илиstub.restore();
). Исключено исключение если свойство еще не является функцией, чтобы избежать опечаток, когда методы обрушения.