Quiero confirmar que un valor es un decimal (o 0), por lo que el número debe ser mayor o igual que cero y menor que 1.
describe('percent',function(){
it('should be a decimal', function() {
var percent = insights.percent;
expect(percent).toBeGreaterThan(0);
expect(percent).toBeLessThan(1);
});
});
¿Cómo imito "> = 0"?
javascript
tdd
jasmine
Bryce Johnson
fuente
fuente
expect(percent).not.toBeLessThan(0);
Respuestas:
Pensé que debería actualizar esto ya que la API ha cambiado en las versiones más recientes de Jasmine. La API de Jasmine ahora tiene funciones integradas para:
Debe utilizar estas funciones en lugar de los consejos siguientes.
Haga clic aquí para obtener más información sobre la API de Jasmine Matchers
Sé que esta es una pregunta antigua y resuelta, pero noté que se perdió una solución bastante ordenada. Dado que mayor o igual que es la inversa de la función menor que, intente:En este enfoque, el valor del porcentaje puede ser devuelto por una función asíncrona y procesado como parte del flujo de control.fuente
expect(2 + 2).not.toBe(5)
,expect(2 + 2).toBeGreaterThan(0)
,expect(2 + 2).toBeLessThan(5)
expect(NaN).not.toBeLessThan(0);
pasa en lugar de fallar. (not.toBeLessThan
es solo el inverso si asume quepercent
es un Número. De lo contrario, no es el inverso).Solo necesita ejecutar la operación de comparación primero y luego verificar si es veraz.
fuente
since('expected percent to be greater than or equal to zero').expect(percent >= 0).toBeTruthy();
>=
, prefiero un comparador personalizado porque mantiene las pruebas ordenadas (lo suficientemente fácil de hacer, vea mi respuesta a continuación), pero para las comparaciones que surgen con menos frecuencia o no son lo suficientemente expresivas, ese complemento parece ser exactamente el cosa correcta. ¡Gracias!expect(percent).toBeGreaterThan(-1);
xD? No lo probéLa versión actual de Jasmine admite toBeGreaterThan y toBeLessThan.
fuente
Algo estrangulado, esta no es una funcionalidad básica
Puede agregar un comparador personalizado como este:
JasmineExtensions.js
En efecto, está definiendo un constructor para su matcher: es una función que devuelve un objeto matcher.
Incluya eso antes de 'arrancar'. Los comparadores básicos se cargan en el momento del arranque.
Su archivo html debería verse así:
Luego, en su boot.js, agregue la llamada para agregar los emparejadores después de que se haya definido jasmine pero antes de jasmine.getEnv (). Get env es en realidad una llamada de configuración (con un nombre un poco engañoso).
Los emparejadores se configuran en la llamada a setupCoreMatchers en el constructor Env.
Muestran otra forma de agregar comparadores personalizados en las pruebas de muestra, sin embargo, la forma en que funciona es recrear los comparadores antes de cada prueba usando un archivo
beforeEach
. Eso parece bastante horrible, así que pensé en este enfoque.fuente
Llego tarde a esto, pero lo publico en caso de que alguien todavía visite esta pregunta en busca de respuestas, estoy usando Jasmine versión 3.0 y, como lo menciona @Patrizio Rullo, puede usar toBeGreaterThanOrEqual / toBeLessThanOrEqual .
Se agregó en la versión 2.5 según las notas de la versión: https://github.com/jasmine/jasmine/blob/master/release_notes/2.5.0.md
Por ejemplo
o
fuente
Hoy me he encontrado con el mismo problema, y resulta que no es tan difícil agregarle un comparador personalizado. La principal ventaja de un comparador personalizado es que puede devolver mensajes significativos cuando falla una prueba.
Así que aquí está el código para dos comparadores
.toBeAtLeast()
y.toBeAtMost()
, en caso de que ayude a alguien.fuente
Se acaba de fusionar en la rama maestra de Jasmine GitHub mi parche para agregar los emparejadores que necesita:
Agregar a los emparejadoresBeGreatThanOrEqual y toBeLessThanOrEqual
Pero no tengo idea de en qué versión será. Mientras tanto, puedes intentar usar el código de mi confirmación en tu copia local de Jasmine.
fuente
Recomiendo usar este pluging Jasmine: https://github.com/JamieMason/Jasmine-Matchers
fuente
Puede utilizar la función
least
para comprobar si un valor es mayor o igual que algún otro valor.Un alias de
least
esgte
(mayor o igual que). Viceversa, puede usarlte
(menor o igual a) para verificar lo contrario.Entonces, para responder a la pregunta, puede hacer:
expect(percent).to.be.gte(0)
fuente
TypeError: Cannot read property 'be' of undefined
deexpect(1).to.be.gte(-1);