javascript - have - Chai unittesting-expect(42).to.be.an(''integer'')
chaijs include (6)
Dependiendo del navegador / contexto en el que se está ejecutando, también hay una función que cuelga de Número que sería de alguna utilidad.
var value = 42;
Number.isInteger(value).should.be.true;
No se ha adoptado en todas partes, pero la mayoría de los lugares importantes (Chrome, FFox, Opera, Node)
De acuerdo con http://chaijs.com/api/bdd/#a , se puede usar a / an
para verificar el tipo de variable.
.un tipo)
@param{ String } type
@param{ String } message _optional_
Las
a
y las aserciones son alias que pueden usarse como cadenas de lenguaje o para afirmar el tipo de un valor.
Sin embargo, no puedo comprobar si la variable es un entero. Los ejemplos dados, por ejemplo, expect(''1337'').to.be.a(''string'');
Trabaja para mí, pero lo siguiente no:
expect(42).to.be.an(''integer'');
expect(42).to.be.an(''Integer'');
expect(42).to.be.an(''int'');
expect(42).to.be.an(''Int'');
Todos ellos me están dando el siguiente error al ejecutar mocha:
Uncaught AssertionError: expected 42 to be an integer
¿Cómo hago pruebas con chai para una variable que es un número entero?
Esto también es posible (al menos en un nodo):
expect(42).to.satisfy(Number.isInteger);
Aquí hay un ejemplo más avanzado:
expect({NUM: 1}).to.have.property(''NUM'').which.is.a(''number'').above(0).and.satisfy(Number.isInteger);
JavaScript no tiene un tipo integer
separado.
Todo es un número de punto flotante IEE 754 , que sería del number
de tipo.
Otra solución [no óptima] (¿por qué no ?!)
const actual = String(val).match(/^/d+$/);
expect(actual).to.be.an(''array'');
expect(actual).to.have.lengthOf(1);
Siento tu dolor, esto es lo que se me ocurrió:
var assert = require(''chai'').assert;
describe(''Something'', function() {
it(''should be an integer'', function() {
var result = iShouldReturnInt();
assert.isNumber(result);
var isInt = result % 1 === 0;
assert(isInt, ''not an integer:'' + result);
});
});
Un poco tarde, pero para las personas que vienen de los motores de búsqueda, aquí hay otra solución:
var expect = require(''chai'').expect
expect(foo).to.be.a(''number'')
expect(foo % 1).to.equal(0)
La verificación del número es necesaria debido a cosas como true % 1 === 0
o null % 1 === 0
.