【发布时间】:2011-10-02 09:54:12
【问题描述】:
有一些Jasmine+Rhino 组合来测试javascript 代码并尝试转移到node.js。但是,在网上找不到任何设置说明(但只有this 链接,说明几乎为零)。任何有关如何使其成为现实(在 Ubuntu 上)的帮助将不胜感激。
【问题讨论】:
标签: javascript testing node.js jasmine
有一些Jasmine+Rhino 组合来测试javascript 代码并尝试转移到node.js。但是,在网上找不到任何设置说明(但只有this 链接,说明几乎为零)。任何有关如何使其成为现实(在 Ubuntu 上)的帮助将不胜感激。
【问题讨论】:
标签: javascript testing node.js jasmine
当我第一次尝试使用 jasmine-node 时,我也有同样的想法(关于文档)。然而,事实证明,几乎没有什么需要设置的——它就像 RSpec 或您可能习惯使用的其他测试工具一样工作。要将 Jasmine 用于您的 Node 项目,请执行以下操作:
jasmine-node 并且您可以运行其可执行文件。jasmine-node specs/ 运行您的规范(其中specs/ 指向您的规范所在的目录)。就是这样!您可能会发现使用某种构建工具很有用,例如用于 CoffeeScript 的 cake 或 jake。
这是我最近使用 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)
[编辑]
您还可以在specs/ 目录的根目录中添加一个spec_helper 文件(具有适合您项目的扩展名)。这是我的内容,它为 Jasmine 添加了一个新的匹配器:
jasmine = require('jasmine-node')
beforeEach ->
this.addMatchers
toInclude: (should_include) ->
for value in @actual
return true if value == should_include
false
【讨论】:
Zombie.js:zombie.labnotes.org)?