¿Cómo puedo hacer que Jasmine en CoffeeScript pruebe las excepciones?
Frecuentes
Visto 307 veces
1
Tengo este codigo:
class root.Goal
constructor: (@name, @size) ->
if @size <= 0 then throw new Error "Goal must be larger than 0 size"
Probado por esta prueba Jasmine-CoffeeScript:
it "cannot be of size 0", ->
expect(new p.Goal("Goal 3", 0)).toThrow "Goal must be larger than 0 size"
Parece que la excepción se lanza, pero la prueba no la maneja:
cannot be of size 0
Failures:
1) cannot be of size 0
Message:
Error: Goal must be larger than 0 size
Stacktrace:
Error: Goal must be larger than 0 size
at new Goal (/var/lib/stickshift/1d4f33cd01e442eaa154aed2e7697ca7/app-root/data/235917/prioritization/process.coffee:14:15)
¿Alguna idea?
1 Respuestas
1
Como ya ha descubierto, debe ajustar la llamada a su código de lanzamiento de errores en una función anónima. Si no lo hace, la llamada a esperar obtendrá el "resultado" (si corresponde) de su código de lanzamiento de errores. Entonces, cuando se espera que se llame, toda la "acción" ya ha terminado.
Respondido 27 ago 12, 16:08
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas exception-handling coffeescript jasmine or haz tu propia pregunta.
posible duplicado de Cómo escribir una prueba que espera que se arroje un error - mu is too short
Pensé que tal vez también... así que traté de llamar al "nuevo p.Objetivo("Objetivo 3", 0) en una función anónima, así: esperar(f = hacer -> nuevo p.Objetivo("Objetivo 3 ", 0)), pero eso tampoco funcionó. - Doug Knesek
resultó que esta sintaxis funcionó: expect(-> new p.Goal("Objetivo 3", 0)).toThrow "El objetivo debe tener un tamaño mayor que 0" - Doug Knesek
Derecha,
expect
quiere una función para ejecutar pero eldo
ejecutaría la función antesexpect
me llamaron - mu is too short