2011-11-06 100 views
4

我正在嘗試對CoffeeScript/JavaScript與JsTestDriver實施非常基本的單元測試。我有兩個文件:在JsTestDriver中設置咖啡腳本單元測試

1)的lib/Greeter.coffee

greet = (name) -> 
    "Hello #{name}" 

2)的lib/GreeterTest.coffee

tests = { 
    "Test 1": -> assertEquals("Hello World!", greet "World") 
} 

TestCase("Test for introducing the test framework", tests) 

jsTestDriver.conf定義他們的路線與行:- lib/*.js但是,執行測試時,我得到:Total 0 tests (Passed 0; Fails: 0; Errors: 0)

我相信,測試可以定位,因爲插入明顯的程序錯誤會導致檢測到具體文件中的錯誤。還插入警報調用導致預期的行爲:在瀏覽器被捕獲我看到警報消息框

我錯過了什麼嗎?怎麼能這樣的東西被調試?


什麼工作,雖然是這樣的:

TestCase("Test case 1", { 

    testGreet: -> 
     greeter = new Greeter 
     assertEquals("Hello World!", greeter.greet "World") 
}) 

class @Greeter 

    constructor: -> 

    greet: (name) -> 
     return "Hello #{name}!" 

如果這兩個文件駐留在同一文件夾,你可以刪除@

回答

3

見本問題:ReferenceError: CoffeeScript + JsTestDriver + Qunit。你有同樣的問題,因爲greet =定義了一個局部變量,在Greeter.coffee以外是不可見的。將其更改爲window.greet =@greet =

但是,這並不能解釋Total 0 tests問題。我對JsTestDriver並不熟悉,但在this page上建議測試名稱必須以「test」開頭 - 可以忽略大寫的名稱"Test 1"?嘗試將其更改爲"test1"

+0

你可能是對的,我向我的問題添加了一個可能的解決方案。測試函數以「test」開始 –

+0

因此,如果'testGreet:'工作但TestGreet:沒有,您應該將我的答案標記爲正確。 –

+0

不要急於閱讀答案和接受它在stackoverflow之間的時間差距持續的討論:-) –

1

確保當您運行java -jar $JSTESTDRIVER -tests all時,您在某個目錄中作爲測試,這應該處理「總計0測試」問題。我有同樣的問題。

+0

不,這實際上是因爲我沒有用前綴「test ..」命名測試函數。 ,但爲了說明另一個可能的原因+1! –