Жасмин и нод.js - PullRequest
       3

Жасмин и нод.js

18 голосов
/ 02 октября 2011

Есть несколько Jasmine+Rhino комбо, чтобы проверить код JavaScript и пытается перейти к node.js. Тем не менее, не удалось найти никаких инструкций по настройке в сети (но только эта ссылка, с почти нулевыми инструкциями). Буду очень признателен за любую помощь в том, как это сделать (в Ubuntu).

1 Ответ

28 голосов
/ 02 октября 2011

Я думал о том же (в отношении документации), когда впервые попытался использовать jasmine-node. Однако оказывается, что настраивать практически нечего - он работает так же, как RSpec или другие инструменты тестирования, к которым вы могли привыкнуть. Чтобы использовать Jasmine с вашим проектом Node, сделайте следующее:

  1. Убедитесь, что jasmine-node установлен и вы можете запустить его исполняемый файл.
  2. Напишите свои характеристики! У меня есть образец спецификации ниже этих шагов.
  3. Запустите ваши спецификации с помощью команды jasmine-node specs/ (где specs/ указывает на каталог с вашими спецификациями).

Вот и все! Может оказаться полезным использовать какой-либо инструмент для сборки, например cake для CoffeeScript или jake.

Вот краткий пример части спецификации из небольшого проекта, в котором я недавно использовал jasmine-node; извиняюсь, что это в CoffeeScript. (В качестве отступления: чтобы запустить jasmine-node со спецификациями CoffeeScript, передайте ему параметр --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)

[Изменить]

Вы также можете добавить файл spec_helper (с соответствующим расширением для вашего проекта) в корневой каталог specs/. Вот содержимое моего, которое добавляет новый сопоставитель для Жасмин:

jasmine = require('jasmine-node')

beforeEach ->
 this.addMatchers
   toInclude: (should_include) ->
     for value in @actual
       return true if value == should_include
     false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...