簡體   English   中英

Coffeescript單元測試因Mocha,Should,Node.js失敗

[英]Coffeescript unit test failing with Mocha, Should, Node.js

我正在嘗試使用Mocha為CoffeeScript示例類層次結構運行示例CoffeeScript單元測試。 但是我一直在收到錯誤,而且似乎在沒有任何幫助的情況下也無法修復它們。 這是我的示例CoffeeScript文件,位於/ src文件夾中:

 #Animal.coffee
  class Animal
    constructor: (@name) ->

    move: (meters) ->
      console.log @name + " moved #{meters}m."

  class Snake extends Animal
    move: ->
      console.log "Slithering..."
      super 5

  class Horse extends Animal
    move: ->
      console.log "Galloping..."
      super 45

  #module.exports = new Snake()
  module.exports.Snake = Snake

這是/ Tests文件夾中的CoffeeScript單元測試:

  #AnimalTest.coffee
  should  = require 'should'
  { Snake } = require "../src/Animal"

  describe 'sample', ->
     it 'should pass', ->
         snake = new Snake "Venomous python"
         snake.should.be.an.instanceOf(Snake)

我已經在全球范圍內安裝了所有這些庫。 因此,當我通過命令行(Windows 7)執行此命令時:

   Desktop>mocha --compilerscoffee:coffee-script/register Tests

它拋出了這個錯誤:

    desktop\Tests\sampleTest.coffee:15
    snake.should.be.an.instanceOf(Snake);
    ^
    ReferenceError: snake is not defined
    at Object.<anonymous> (c:\users\ap\desktop\Tests\AnimalTest.coffee:8:3)
    at Object.<anonymous> (c:\users\ap\desktop\Tests\AnimalTest.coffee:2:1)
    at Module._compile (module.js:456:26)
    at Object.loadFile (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-sc
    ript\lib\coffee-script\register.js:16:19)
    at Module.load (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-script
    \lib\coffee-script\register.js:45:36)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:172:27
    at Array.forEach (native)
    at Mocha.loadFiles (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib
    \mocha.js:169:14)
    at Mocha.run (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha
    .js:356:31)
    at Object.<anonymous> (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\
    bin\_mocha:359:16)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:902:3

我正在使用CoffeeScript版本1.7.1,Mocha版本1.18.2和Node版本0.10.26。 我嘗試到處尋找並嘗試了測試之間的所有組合,但是我一生都無法想出如何使它成功創建對象並運行測試的方法。

作為參考,我嘗試了所有其他組合的這些方法: 使用nodejs從另一個CoffeeScript文件中請求CoffeeScript文件

如何在Coffeescript Mocha Test中檢查類繼承?

有人可以指出可能出什么問題嗎?

更新1:修改了dule指出的所有內容,但現在我收到此錯誤:

module.js:340
    throw err;
      ^
    Error: Cannot find module 'should'
     at Function.Module._resolveFilename (module.js:338:15)
     at Function.Module._load (module.js:280:25)
     at Module.require (module.js:364:17)
     at require (module.js:380:17)
     at Object.<anonymous> (C:\Users\ap\Desktop\Tests\AnimalTest.coffee:2:11)
     at Object.<anonymous> (C:\Users\ap\Desktop\Tests\AnimalTest.coffee:2:1)
     at Module._compile (module.js:456:26)
     at Object.loadFile (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-sc
     ript\lib\coffee-script\register.js:16:19)
     at Module.load (C:\Users\ap\AppData\Roaming\npm\node_modules\coffee-script
     \lib\coffee-script\register.js:45:36)
     at Function.Module._load (module.js:312:12)
     at Module.require (module.js:364:17)
     at require (module.js:380:17)
     at C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha.js:172:27
     at Array.forEach (native)
     at Mocha.loadFiles (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib
     \mocha.js:169:14)
     at Mocha.run (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\lib\mocha
     .js:356:31)
     at Object.<anonymous> (C:\Users\ap\AppData\Roaming\npm\node_modules\mocha\
     bin\_mocha:359:16)
     at Module._compile (module.js:456:26)
     at Object.Module._extensions..js (module.js:474:10)
     at Module.load (module.js:356:32)
     at Function.Module._load (module.js:312:12)
     at Function.Module.runMain (module.js:497:10)
     at startup (node.js:119:16)
     at node.js:902:3

更新2:我對AnimalTest腳本進行了以下更改,並通過了測試。

  should  = require ("../npm/node_modules/should/should")
  { Snake } = require ("../src/Animal.coffee")

  describe 'sample', ->
     it 'should pass', ->
    console.log(new Snake "Venomous python")

但是,由於某種原因,創建對象並將其保存以供使用仍然失敗。 和我得到相同的snake not defined錯誤。

看來您有很多問題。 請嘗試以下操作:

src / animal.coffee:

class Animal
    constructor: (@name) ->

    move: (meters) ->
        console.log @name + " moved #{meters}m."

class Snake extends Animal
    move: ->
        console.log "Slithering..."
        super 5

module.exports.Snake = Snake

測試/animalTest.coffee

should  = require "should"
{ Snake } = require "../src/animal"

describe 'sample', ->
    it 'should pass', ->
        snake = new Snake "Venomous python"
        snake.should.be.an.instanceOf(Snake)

然后運行(從項目根目錄開始):

mocha --compilers coffee:coffee-script/register tests

因此,這完全是奇怪的。 一個解釋是非常受歡迎的! 這就是我所做的,測試通過了:

 should  = require ("../npm/node_modules/should/should")
 { Snake } = require ("../src/Animal.coffee")

 describe 'sample', ->
    it 'should pass', ->
      (new Snake "Venomous python").should.be.an.instanceOf(Snake)

使用CoffeeScript 1.8.0和Mocha 1.21.4時,我的測試用例隨機中斷。

可以手動批准該測試用例,但是它在mocha中失敗,並帶有諸如“ undefined function ...”之類的奇怪異常。 無法復制長久失敗,異常,堆棧跟蹤...

解決方法:

  • 享受麻煩
  • 注釋掉所有失敗的測試案例
  • 嘗試直接使用更多JavaScript
  • 嘗試使用其他單元測試工具,例如nodeunit
  • 這聽起來很愚蠢,但是當調試變得很糟糕時, 一切都會發生 ,至少對我而言。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM