property have check chaijs array javascript node.js unit-testing mocha chai

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)

Más información aquí

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



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 .