unitarias - test unitarios javascript
Chai: cómo probar indefinido con la sintaxis ''should'' (9)
Esta es una de las desventajas de la sintaxis should. Funciona agregando la propiedad should a todos los objetos, pero si un valor devuelto o variable no está definido, no hay un objeto para mantener la propiedad.
La documentation proporciona algunas soluciones, por ejemplo:
var should = require(''chai'').should();
db.get(1234, function (err, doc) {
should.not.exist(err);
should.exist(doc);
doc.should.be.an(''object'');
});
Sobre la base de this tutorial que prueba una aplicación angularjs con chai, deseo agregar una prueba para un valor indefinido utilizando el estilo "should". Esto falla:
it (''cannot play outside the board'', function() {
scope.play(10).should.be.undefined;
});
con el error "TypeError: no se puede leer la propiedad ''should'' de undefined", pero la prueba pasa con el estilo "expect":
it (''cannot play outside the board'', function() {
chai.expect(scope.play(10)).to.be.undefined;
});
¿Cómo puedo hacer que funcione con "debería"?
La respuesta de @ david-norman es correcta según la documentación, tuve algunos problemas con la configuración y opté por lo siguiente.
(typeof scope.play (10)). should.be undeined;
Luché para escribir la declaración de deber para pruebas indefinidas. Lo siguiente no funciona.
target.should.be.undefined();
Encontré las siguientes soluciones.
(target === undefined).should.be.true()
si también puede escribirlo como una verificación de tipo
(typeof target).should.be.equal(''undefined'');
No estoy seguro si lo anterior es la manera correcta, pero funciona.
No se olvide de una combinación de have
y not
palabras clave:
const chai = require(''chai'');
chai.should();
// ...
userData.should.not.have.property(''passwordHash'');
Prueba esto:
it (''cannot play outside the board'', function() {
expect(scope.play(10)).to.be.undefined; // undefined
expect(scope.play(10)).to.not.be.undefined; // or not
});
Prueba para indefinido
var should = require(''should'');
...
should(scope.play(10)).be.undefined;
Prueba de nulo
var should = require(''should'');
...
should(scope.play(10)).be.null;
Prueba de faly, es decir, tratado como falso en condiciones
var should = require(''should'');
...
should(scope.play(10)).not.be.ok;
Puede ajustar el resultado de su función en should()
y probar para un tipo de "indefinido":
it (''cannot play outside the board'', function() {
should(scope.play(10)).be.type(''undefined'');
});
(typeof scope.play(10)).should.equal(''undefined'');
should.equal(testedValue, undefined);
como se menciona en la documentación de chai