2011-11-06 76 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! –