2012-09-20 64 views
8

我剛剛在使用RequireJS和Jasmine的單元測試策略中尋找依賴注入。我真的很喜歡testr背後的想法,我試圖按照github中的例子來設置testr,但我無法弄清楚什麼是錯的。我總是得到錯誤使用RequireJS,Jasmine和testr的JavaScript依賴注入

Error: module has not been loaded: today

當testr試圖加載將要測試的模塊時。

這裏一些背景..

的index.html ..

<script data-main="config" src="../../assets/js/libs/require.js"></script> 
<script src="vendor/testr.js"></script> 

config.js ..

require.config({ 

    // Initialize specs. 
    deps:["main"], 
... 
... 
}); 

main.js ..

require([ 
    // Load the example spec, replace this and add your own spec 
    "spec/today" 
], function() { 
    var jasmineEnv = jasmine.getEnv(); 
    jasmineEnv.execute(); 
}); 

規格\ today.js ..

describe('Today print', function() { 
    var date = {}, today; 
    beforeEach(function() { 
    date.today = new Date(2012, 3, 30); 
    today = testr('today', {'util/date': date}); //Here is where the error is thrown 
    }); 

    it('is user-friendly', function() { 
    expect(today.getDateString()).toBe('Today is Monday, 30th April, 2012'); 
    }); 
}); 

today.js ..

define(['string', 'util/date'], function(string, date) { 
    return { 
    getDateString: function() { 
     return string.format('Today is %d', date.today); 
    } 
    } 
}); 

有沒有人已經與同樣的麻煩? 。我正在使用RequireJS 2.0.6

謝謝。

回答

1

在使用testr之前,您的'today'模塊需要從requirejs加載。 試着這麼做:

require(['today'], function(){ 
    describe('Today print', function() { 
     var date = {}, today; 
     beforeEach(function() { 
     date.today = new Date(2012, 3, 30); 
     today = testr('today', {'util/date': date}); //Here is where the error is thrown 
     }); 

     it('is user-friendly', function() { 
     expect(today.getDateString()).toBe('Today is Monday, 30th April, 2012'); 
     }); 
    }); 
}); 

還可以閱讀:http://cyberasylum.janithw.com/mocking-requirejs-dependencies-for-unit-testing/

+0

沒關係。我一直在努力讓testr現在工作幾天。這是我最近看到的一個示例項目。我爲這個例子創建了一個github回購(用一些小小的調整),用茉莉花與其他人分享。但是,它仍然無法正常工作。任何人都可以幫忙嗎?謝謝。 https://github.com/loesak/jasmine-maven-require-testr – loesak

+0

我有同樣的問題。事實上,我手動將它作爲dep加載到我的require.config中,並且Karma顯示該文件正在被請求(第一個)。 – FlavorScape