2011-11-27 35 views
0

我試圖構建一種在CoffeeScript中執行PHPUnit樣式測試用例類的方法。我非常接近實現我的目標與這兩個類:當在CoffeeScript中聲明綁定到子對象的函數時QUnit爆炸

QUnitTestCase.coffee:

class QUnitTestCase 

    constructor: (name) -> 
     module name 
     @setUp() 
     @runAllTests() 

    setUp: -> 
     return null 

    runAllTests: -> 
     for funcName, func of @ 
      if funcName.substr(0, 4) is 'test' and typeof func is 'function' 
       testName = funcName.substr(4).charAt(0).toLowerCase() + funcName.substr(5) 
       @setUp() 
       test testName, func() 
     return null 

CircleTest.coffee:

class CircleTest extends QUnitTestCase 

    constructor: -> 
     super "Circle" 

    setUp: -> 
     @mockCanvas = mock(Canvas) 
     @testObj = new Circle(@mockCanvas) 
     $('canvas').css display: 'none' 

    testDrawReturnsNull: => 
     returned = @testObj.draw() 
     strictEqual null, returned, 'returns null' 

然而,QUnit此錯誤吹起來:「未捕獲TypeError:無法讀取未定義的屬性'斷言'(qunit.js第666行)「。

看着QUnit,我相信當定義斷言的函數綁定到對象時,QUnit中的Test對象會變得錯誤。如果我移動「)測試(」調用出來的子類,像這樣...

testDrawReturnsNull: => 
     test "drawReturnsNull", => 
      returned = @testObj.draw() 
      strictEqual null, returned, 'returns null' 

...然後QUnit運行沒有任何錯誤罰款,但是這創造了一種重複的,我不要真的不舒服。也許某個更好地理解QUnit的人可以指出我正確的方向。

謝謝。

回答

1

你寫

test testName, func() 

,而不是

test testName, func 

這似乎是一個問題。您希望將函數傳遞給test,而不是先運行它並傳遞返回的值。

+0

工作。謝謝。 – IkimashoZ