尝试使用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不运行?我错过了什么吗?