¿Cómo puedo hacer que Jasmine en CoffeeScript pruebe las excepciones?

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?

preguntado el 24 de agosto de 12 a las 02:08

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ó. -

resultó que esta sintaxis funcionó: expect(-> new p.Goal("Objetivo 3", 0)).toThrow "El objetivo debe tener un tamaño mayor que 0" -

Derecha, expect quiere una función para ejecutar pero el do ejecutaría la función antes expect me llamaron -

1 Respuestas

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 or haz tu propia pregunta.