Tengo un problema al escribir una prueba de unidad para probar una función que tiene verificación de instancia. Lógica de negocios:
let status = new B(); const testFunction = () => { if (status instanceof A) { console.log('inside A') } else if (status instanceof B) { console.log('inside B') } else { console.log('No matchers') }}
Prueba de unidad:
describe('test', ()=>{ it("should test b", ()=>{ let status = new A() expect(status).toBeInstanceOf(A) // passes expect(logSpy).toHaveBeenCalledWith('inside A') // fails and it expects 'inside B' }) }) Una razón por la que siento que la prueba está fallando es porque en el archivo original, el status devuelve una instancia de clase B, por lo que coincide con else if y not if . No estoy seguro de cómo probar este código sin cambiar status . ¿Hay alguna manera de que me lo esté perdiendo?
EDITAR: aquí se supone que testFunction() ya se invocó en las pruebas unitarias
Puede pasar el estado como parámetro de su función;
const testFunction = (status) => { if (status instanceof A) { console.log('inside A') } else if (status instanceof B) { console.log('inside B') } else { console.log('No matchers') } }Luego, se debe llamar a testFunction() con el estado que necesita probar;
const status = new A(); testFunction(status);El problema con su prueba es que la función que está probando tiene su propio alcance, la otra solución es simular la variable, pero podría confundirse más