2016-03-04 38 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後變得清晰。

相關問題