Jasmine and node.js

Jasmine and node.js

本文关键字:js node and Jasmine      更新时间:2023-09-26

有一些Jasmine+Rhino组合来测试javascript代码,并试图转移到node.js。但是,在网上找不到任何安装说明(只有这个链接,几乎没有说明)。任何关于如何实现它的帮助(在Ubuntu上)将非常感谢。

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

    确保jasmine-node已经安装并且可以运行它的可执行文件。
  1. 写你的规格!我在这些步骤下面有一个示例规范。
  2. 使用命令jasmine-node specs/运行spec(其中specs/指向包含spec的目录)。

就是这样!您可能会发现使用某种构建工具是有益的,例如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)
[编辑]

您还可以在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