Tienen un combo de Jasmine+Rhino
para probar el código de JavaScript e intentar cambiar al node.js
. Sin embargo, no pude encontrar ninguna instrucción de configuración en la red (pero solo el enlace this, con casi cero instrucciones). Cualquier ayuda sobre cómo hacerlo realidad (en Ubuntu) será muy apreciada.Jasmine y node.js
Respuesta
Pensé lo mismo (en cuanto a la documentación) cuando traté de usar jazmín-nodo por primera vez. Sin embargo, resulta que prácticamente no hay nada que configurar, funciona igual que RSpec u otras herramientas de prueba a las que puedas estar acostumbrado. Para utilizar jazmín con su proyecto de nodo, haga lo siguiente:
- compruebe que tiene instalada
jasmine-node
y que puede ejecutar su ejecutable. - ¡Escriba sus especificaciones! Tengo una muestra de especificación debajo de estos pasos.
- Ejecute sus especificaciones con el comando
jasmine-node specs/
(dondespecs/
apunta al directorio con sus especificaciones).
Eso es todo! Puede resultarle útil utilizar algún tipo de herramienta de compilación, como cake
para CoffeeScript o jake
.
Aquí hay un ejemplo rápido de parte de una especificación de un proyecto pequeño en el que utilicé jasmine-node recientemente; Disculpa que está en CoffeeScript. (Dicho sea de paso: para funcionar jazmín-nodo contra especificaciones CoffeeScript, pasarla a la opción --coffee
.)
Chess = require('../lib/chess')
Board = Chess.Board
jasmine = require('jasmine-node')
describe "A chess board", ->
beforeEach ->
@board = new Board
it "should convert a letter/number position into an array index", ->
expect(Board.squares["a1"]).toEqual(0)
expect(Board.squares["b1"]).toEqual(1)
expect(Board.squares["a2"]).toEqual(16)
expect(Board.squares["h8"]).toEqual(119)
it "should know if an array index represents a valid square", ->
expect(Board.is_valid_square 0).toBeTruthy()
expect(Board.is_valid_square 7).toBeTruthy()
expect(Board.is_valid_square 8).toBeFalsy()
expect(Board.is_valid_square 15).toBeFalsy()
expect(Board.is_valid_square 119).toBeTruthy()
expect(Board.is_valid_square 120).toBeFalsy()
expect(Board.is_valid_square 129).toBeFalsy()
expect(Board.is_valid_square -1).toBeFalsy()
it "should start off clear", ->
for i in [0..127]
if Board.is_valid_square(i)
expect(@board.piece_on(i)).toBeNull()
describe "#place_piece", ->
it "should place a piece on the board", ->
piece = jasmine.createSpy("piece")
@board.place_piece "a1", piece
expect(@board.piece_on "a1").toEqual(piece)
it "should set the piece's location to the given square's index", ->
piece = jasmine.createSpyObj(Piece, ["position"])
@board.place_piece "b5", piece
expect(piece.position).toEqual(65)
[Editar]
También puede agregar un archivo spec_helper
(con la extensión adecuada para su proyecto) en la raíz de su directorio specs/
. Aquí está el contenido mío, que agrega un nuevo marcador a Jasmine:
jasmine = require('jasmine-node')
beforeEach ->
this.addMatchers
toInclude: (should_include) ->
for value in @actual
return true if value == should_include
false
- 1. Prueba API web usando jasmine y node.js
- 2. Javascript JsTestDriver Jasmine & Jasmine-jquery
- 3. Prueba del código javascript del lado del cliente con Jasmine y node.js
- 4. Ejecutando JSCoverage con Jasmine
- 5. Backbone jasmine sinon.stub typeError
- 6. Probando jQuery Hover con Jasmine
- 7. Travis-CI con jasmine-node
- 8. Jasmine (mocha) anidado "it" prueba
- 9. expectativas de error en Jasmine
- 10. Cómo probar XMLHttpRequest con Jasmine
- 11. Inyección de dependencia de JavaScript utilizando RequireJS, Jasmine y testr
- 12. Node.js y crypto library
- 13. Node.js y Mutexes
- 14. Array.sort y Node.js
- 15. Sinon + Backbone specifying failing en Jasmine Headless Webkit pero pasando con Jasmine independiente
- 16. ¿cómo congelar/hora falso con Jasmine BDD
- 17. ¿Es posible integrar Jasmine en cruise control.net
- 18. ¿Alguien tiene un corredor mstest para Jasmine?
- 19. Ruby on rails y Node.js
- 20. BDD y TDD para node.js?
- 21. Diferencia entre socket.io y node.js
- 22. Node.js, Express y Jade - Formas
- 23. Node.js, restify y enrutamiento adecuado
- 24. Diferencias entre Narwhal y Node.js?
- 25. Node.js y Microsoft SQL Server
- 26. Node.js y Express en Windows
- 27. node.js express app.get y app.post
- 28. Node.js, multi-threading y Socket.io
- 29. Jasmine no puede activar el evento click
- 30. Preguntas Redis y Node.js y Socket.io
encantador! solo otra aclaración, por favor: si se supone que mi código javascript se ejecuta en el navegador (modelo DOM, etc.), entonces necesito adiciones a jazmín-nodo (decir 'Zombie.js': http://zombie.labnotes.org/)? – BreakPhreak
@BreakPhreak Depende de cuáles sean sus pruebas. Si su código de prueba ** depende ** del DOM, entonces deberá incluir una biblioteca DOM para el nodo (como Zombie.js). Sin embargo, la mayoría de los proyectos usan el DOM pero no están enfocados en el DOM. En este caso, puede modularizar su código para que tenga las manipulaciones DOM separadas de las funciones que desea probar y solo pruebe las características que no son DOM en la especificación jazmín. También es apropiado usar espías de jazmín para atenuar las funciones específicas de DOM para que no se necesite compatibilidad con DOM cuando se ejecuta a través de jasmine-node (podría considerarse la mejor práctica) – Sukima
@Sukima: ¡gracias! mi código realmente usa el DOM muy intensamente (y debe tenerlo limpiamente debajo de las huellas dactilares) – BreakPhreak