2016-03-04 39 views
0

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

回答

0

beforeEach来自QUnit 2.x,而在QUnit 0.9它是setup

这些事情在阅读QUnit 2.x Upgrade Guide后变得清晰。

相关问题