2013-06-24 22 views
1

我是實習生新手,努力嘗試在我的環境中運行一個簡單的測試。我能夠讓教程測試運行,但我試圖設置測試文件位於我的應用程序目錄層次結構內的測試。該模塊被測試位置爲:爲什麼我的實習生測試失敗,「文檔沒有定義」

sandbox/web/libs/ev/grids/FilterGrid.js 

測試文件位於:

sandbox/web/libs/ev/tests/FilterGrid.js 

我的實習生配置文件位於:

sandbox/tests/intern.js 

我的裝載機和套房對象容貌像這樣:

loader: { 
    packages: [ 
     { name: 'dojo', location: 'web/libs/dojo' }, 
     { name: 'dijit', location: 'web/libs/dijit }, 
     { name: 'dgrid', location: 'web/libs/dgrid' }, 
     { name: 'put-selector', location: 'web/libs/put-selector' }, 
     { name: 'xstyle', location: 'web/libs/xstyle' }, 
     { name: 'ev', location: 'web/libs/ev' } 
    ] 
}, 
suites: ['ev/tests/FilterGrid'], 

當加載器試圖加載時,我得到:

Defaulting to "console" reporter 
ReferenceError: document is not defined 
    at /home/bholm/Projects/src/sandbox/web/libs/dojo/selector/_loader.js:5:15 
    at execModule (/home/bholm/Projects/src/sandbox/node_modules/intern/node_module 
     /dojo/dojo.js:512:54) 
    at /home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:579:7 
    at guardCheckComplete (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:563:4) 
    at checkComplete (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:571:27) 
    at onLoadCallback (/home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:653:7) 
    at /home/bholm/Projects/src/sandbox/node_modules/intern/node_modules/dojo/dojo.js:746:5 
    at fs.js:266:14 
    at Object.oncomplete (fs.js:107:15) 

單元測試使用Intern是否需要一個DOM文檔定義? 我還注意到,實習生列出了dojo2_core,因爲它是依賴性的。所以它使用未發佈的代碼?

任何幫助,將不勝感激!

回答

3

看起來你正在嘗試使用需要瀏覽器環境的Node.js客戶端加載一些代碼。這不起作用。您只應在瀏覽器中加載ev/tests/FilterGrid測試套件。你可以通過修改你的Intern配置文件來做到這一點,看起來像這樣:

define([ 'intern/node_modules/dojo/has' ], function (has) { 
    var suites = []; 

    if (has('host-browser')) { 
    suites.push('ev/tests/FilterGrid'); 
    } 

    return { 
    // ...your existing configuration... 
    suites: suites, 
    // ... 
    }; 
}); 
+0

這有助於!但是有一條信息缺失。 node_modules目錄是否必須位於Web根目錄中?似乎它會在瀏覽器中運行client.html。我們不需要node.js等在web根目錄中,所以我們有node_modules dir作爲web根目錄的同級(web在我上面的例子中)。 如果答案是否定的,那麼配置如何設置爲使用web根目錄外的node_modules運行瀏覽器測試? – teaman

+0

簡短的回答是「是」。較長的答案是「不,如果您使用跑步者,但跑步者將始終使用從Intern安裝的任何位置開始的兩個路徑作爲目錄服務的目錄,因此它與將其安裝到Web根目錄中的效果相同」。 –

+0

我認爲這會有幫助,然後知道什麼是關鍵文件/目錄的位置關係。 「關鍵」的含義是web根目錄vs intern.js(配置文件)與正在測試的模塊與單元測試文件。這是什麼靈活性?什麼「有」是在哪裏,什麼可以移動,並在配置中設置映射路徑。說起來,配置文件intern.js中的映射屬性沒有很好的定義或示例,恕我直言。只是試圖瞭解靈活的實習生是多麼的靈活,爲什麼在層次結構中看起來如此僵化。 – teaman