我正在尝试构建一种在CoffeeScript中执行PHPUnit样式的测试用例类的方法。我非常接近实现这两个课程的目标:
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爆发了这个错误:“Uncaught TypeError:无法读取未定义的属性'断言'(qunit.js第666行)”。
看看QUnit,我相信当定义断言的函数绑定到对象时,QUnit中的Test对象会变得错误。如果我将调用“test()”移到子类,就像这样......
testDrawReturnsNull: =>
test "drawReturnsNull", =>
returned = @testObj.draw()
strictEqual null, returned, 'returns null'
...然后QUnit运行良好,没有任何错误,但这会产生一种我并不十分满意的重复。或许更了解QUnit的人可以指出我正确的方向。
感谢。
答案 0 :(得分:1)
你写了
test testName, func()
而不是
test testName, func
这似乎是一个问题。您希望将函数传递给test
,而不是先运行它并传递返回的值。