Jasmine和node.js

时间:2011-10-02 09:54:12

标签: javascript testing node.js jasmine

使用一些Jasmine+Rhino组合来测试javascript代码并尝试转移到node.js。但是,在网络上找不到任何设置说明(但只有this链接,几乎为零指令)。任何有关如何使其成为真实的帮助(在Ubuntu上)都将受到高度赞赏。

1 个答案:

答案 0 :(得分:28)

当我第一次尝试使用jasmine-node时,我想到了同样的事情(关于文档)。事实证明,实际上没有什么可以设置的 - 它就像RSpec或您可能习惯的其他测试工具一样。要将Jasmine与Node项目一起使用,请执行以下操作:

  1. 确保已安装jasmine-node并且您可以运行其可执行文件。
  2. 写下您的规格!我在这些步骤下面有一个示例规范。
  3. 使用jasmine-node specs/命令运行您的规范(其中specs/指向包含您的规范的目录)。
  4. 就是这样!您可能会发现使用某种构建工具很有用,例如CoffeeScript的cakejake

    这是我最近使用jasmine-node的小项目的一部分规范的快速示例;道歉,它是在CoffeeScript中。 (顺便说一句:要针对CoffeeScript规范运行jasmine-node,请将--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添加了一个新的匹配器:

    jasmine = require('jasmine-node')
    
    beforeEach ->
     this.addMatchers
       toInclude: (should_include) ->
         for value in @actual
           return true if value == should_include
         false