嘗試使用require.js構建QUINit 0.9.0測試,如Nathan Davison here所解釋,但另外使用QUnit.module。 (CoffeeScript的文件被轉換爲JS文件打開測試頁之前)beforeEach無法在CoffeeScript中使用Require.js進行模塊化QUnit/Sinon測試
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Test</title>
<link rel="stylesheet" href="css/qunit.css">
<script data-main="unittestsmain" async src="js/require.js"></script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>
unittestsmain.coffee(有3個測試模塊,刪除以節省空間):
requirejs.config
baseUrl: '.'
paths:
"sinon": 'js/sinon-1.17.3'
"QUnit": 'js/qunit'
shim:
"QUnit":
exports: 'QUnit',
init:() ->
QUnit.config.autoload = false
QUnit.config.autostart = false
require ["QUnit", "sinon", "test_sum"],
(QUnit, sinon, test_sum) ->
test_sum.run()
QUnit.load()
QUnit.start()
test_sum 。咖啡(類似於QUnit documentation中的示例之一,除了被包裝成定義之外):
define ["sum"], (sum) ->
run:() ->
module "Sum class",
beforeEach: ->
console.log "in beforeEach:", (p for p of @)
@adder = sum.Sum()
test "Sum: common cases", (assert) ->
assert.equal sum.sum_of_entries([1, 2, 3]), 6
assert.equal sum.sum_of_entries([]), 0
return
# ...
test "Sum: adder class", (assert) ->
console.log "in test:", (p for p of @)
@adder.add(5)
assert.equal @adder.result(), 0
return
我在添加adder類的測試之前沒有任何問題,它在Firefox中抱怨:this.adder is undefined
(並指向test "Sum: adder class"
...部分)。在Chromium中:「TypeError:無法讀取未定義的屬性'add',在同一個函數中。
除了上面提到的失敗測試,瀏覽器中的測試頁面看起來不錯。 (和日誌中沒有視線 「中beforeEach」):
的輸出的console.log in test: ["setup", "teardown", "beforeEach"]
試圖像的=>代替一些較小的變化 - >,。開始,.load順序,但它沒有幫助。 define ["QUnit", "sum"], (QUnit, sum) ->
然後在test_sum中使用QUnit.
也沒有幫助。
我想,最大的問題是爲什麼beforeEach不運行?我錯過了什麼嗎?