Avere qualche combo Jasmine+Rhino
per testare il codice javascript e provare a passare a node.js
. Tuttavia, non è stato possibile trovare alcuna istruzione di configurazione in rete (ma solo il collegamento this, con istruzioni quasi zero). Qualsiasi aiuto su come renderlo vero (su Ubuntu) sarà molto apprezzato.Jasmine e node.js
risposta
Ho pensato la stessa cosa (riguardo alla documentazione) quando ho provato ad usare il nodo di gelsomino. A quanto pare, però, non c'è praticamente nulla da configurare: funziona esattamente come RSpec o altri strumenti di test a cui potresti essere abituato. Per utilizzare Jasmine con il progetto Nodo, effettuare le seguenti operazioni:
- Assicurati
jasmine-node
sia installato e che è possibile eseguire il suo eseguibile. - Scrivi le tue specifiche! Ho una specifica di esempio sotto questi passaggi.
- Eseguire le specifiche con il comando
jasmine-node specs/
(dovespecs/
punta alla directory con le specifiche).
Questo è tutto! Potresti trovare utile utilizzare alcuni strumenti di compilazione come cake
per CoffeeScript o jake
.
Ecco un breve esempio di parte di una specifica di un piccolo progetto che ho utilizzato recentemente sul nodo del gelsomino; mi scuso che è in CoffeeScript. (Per inciso: per eseguire il gelsomino nodi contro specifiche CoffeeScript, passare l'opzione --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)
[Edit]
È possibile anche aggiungere un file spec_helper
(con l'estensione appropriata per il vostro progetto) nella radice della directory specs/
. Ecco il mio contenuto, che aggiunge un nuovo matcher a Jasmine:
jasmine = require('jasmine-node')
beforeEach ->
this.addMatchers
toInclude: (should_include) ->
for value in @actual
return true if value == should_include
false
- 1. Test dell'API Web utilizzando jasmine e node.js
- 2. Test del codice javascript lato client con Jasmine e node.js
- 3. Esegui/debug node.js testcases con jasmine in Webstorm 11
- 4. node.js Istanbul e gelsomino configurazione
- 5. standalone Jasmine vs Karma - Jasmine
- 6. Javascript JsTestDriver Jasmine & Jasmine-jquery
- 7. Jasmine toBeUndefined
- 8. Come test unitario con jasmine e browserify?
- 9. Jasmine jQuery: Utilizzo di toBeHidden() e toBeVisible()
- 10. Jasmine spySulla funzione e oggetto restituito
- 11. Test delle unità usando Jasmine e TypeScript
- 12. Esempio di Squire.js con Jasmine e RequireJS
- 13. Jasmine per C# e/o Java
- 14. AngularJS Karma-jasmine e visual studio 2015
- 15. Qual è lo scopo del nodo jasmine?
- 16. Come utilizzare Jasmine e CucumberJS con il goniometro
- 17. Spia su setTimeout e clearTimeout in Karma e Jasmine
- 18. Node.js e ACL
- 19. node.js e geoserver CORS
- 20. Array.sort e Node.js
- 21. Node.js e Redis Auth
- 22. Jasmine array.length expect
- 23. metodo Jasmine Spies.and.stub
- 24. Jasmine + JSTestDriver + Copertura + RequireJS
- 25. Ottenere Jasmine per l'esecuzione sul lato server
- 26. Backbone jasmine sinon.stub typeError
- 27. Utilizzo di Jasmine Ajax
- 28. Corridore spec. Jasmine/PhantomJs
- 29. classi Esportazione con node.js
- 30. Distribuzione dell'applicazione Node.js e Node.js a Raspberry Pi
affascinante! solo un altro chiarimento per favore: se il mio codice javascript dovrebbe funzionare nel browser (modello DOM ecc.), allora ho bisogno di qualche aggiunta al nodo jasmine (ad esempio 'Zombie.js': http://zombie.labnotes.org/)? – BreakPhreak
@BreakPhreak Dipende da cosa testate. Se il tuo codice di prova ** dipende ** sul DOM, dovrai includere una libreria DOM per il nodo (come Zombie.js). Tuttavia, la maggior parte dei progetti utilizza il DOM ma non si concentra sul DOM. In questo caso puoi modulare il tuo codice in modo da avere le manipolazioni del DOM separate dalle funzioni che vuoi testare e testare solo le funzionalità non DOM nelle specifiche jasmine. È anche opportuno usare le spie del gelsomino per stubare/deridere le funzioni specifiche del DOM in modo che non sia necessario alcun supporto DOM quando si esegue tramite nodo jasmine (potrebbe essere considerata la migliore pratica) – Sukima
@Sukima: grazie! il mio codice effettivamente usa il DOM molto intensamente (e deve averlo pulito sotto le impronte digitali) – BreakPhreak