with unitarios unitarias unit test pruebas node framework before javascript node.js unit-testing mocha

unitarias - test unitarios javascript



¿Cómo simular clases de dependencia para pruebas de unidad con mocha.js? (1)

Puede usar SinonJS para crear un stub para evitar que se ejecute la función real.

Por ejemplo, dada la clase A:

import B from ''./b''; class A { someFunction(){ var dependency = new B(); return dependency.doSomething(); } } export default A;

Y clase B:

class B { doSomething(){ return ''real''; } } export default B;

La prueba podría verse como:

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''); }); });

Luego puede restaurar la función si es necesario usando object.method.restore(); :

var stub = sinon.stub (objeto, "método");
Reemplaza object.method con una función de código auxiliar. La función original se puede restaurar llamando a object.method.restore(); (o stub.restore(); ). Se genera una excepción si la propiedad ya no es una función, para ayudar a evitar los errores tipográficos en los métodos de apéndice.

Dado que tengo dos clases de ES6.

Esta es la clase A:

import B from ''B''; class A { someFunction(){ var dependency = new B(); dependency.doSomething(); } }

Y clase B:

class B{ doSomething(){ // does something } }

Estoy haciendo pruebas de unidad con mocha (con babel para ES6), chai y sinon, que funciona realmente bien. Pero, ¿cómo puedo proporcionar una clase simulada para la clase B al evaluar la clase A?

Quiero burlarme de toda la clase B (o la función necesaria, en realidad no importa) para que la clase A no ejecute código real, pero puedo proporcionar la funcionalidad de prueba.

Esto es, cómo será la prueba de mocha por ahora:

var A = require(''path/to/A.js''); describe("Class A", () => { var InstanceOfA; beforeEach(() => { InstanceOfA = new A(); }); it(''should call B'', () => { InstanceOfA.someFunction(); // How to test A.someFunction() without relying on B??? }); });