2015-04-01 93 views
0

我有一個傳統的推薦實習生的目錄結構:實習生路徑錯誤

MyProject ├── node_modules │ ├── intern-geezer │ │ ├── client.html ├── src │ ├── myFunction.js ├── tests │ ├── intern.js │ ├── unit │ │ ├── ps.js

有一個非常簡單的配置:

useLoader: { 
    'host-node': 'dojo/dojo', 
    'host-browser': 'node_modules/dojo/dojo.js' 
}, 

loader: { 
    packages: [] 
}, 

suites: [ 'tests/unit/ps' ] 

和測試:

define(function (require) { 
    var tdd = require('intern!tdd'); 

    var assert = require('intern/chai!assert'); 

    // Global function to test, not an AMD module 
    var parseF = require('src/myFunction.js'); 

    var he = require('tests/he'); 

    tdd.suite('My tests', function() { 
     //etc 
    }); 
}); 

````

但是當我打開瀏覽器客戶端裝載機正在尋找測試套件實習生,這輛目錄中:

enter image description here

我不是在配置設置baseUrl(或在瀏覽器URL)。通過常規(非geezer)實習生教程,我沒有遇到這種麻煩。由於baseUrl默認爲client.html以上的兩個目錄,我不明白我做錯了什麼。謝謝你的幫助。 (是的,我將需要geezer爲古代的IE瀏覽器。不,我不想重寫我測試的AMD模塊的功能。)

回答

0

實習生裝載程序不知道如何去測試,因爲他們尚未註冊爲一個包。在使用推薦的目錄結構時,您還需要設置建議的loader configuration,以便Intern知道在哪裏可以找到您的代碼和測試。

loader: { 
    packages: [ 
     { name: 'app', location: 'src/' }, 
     { name: 'tests', location: 'tests/' } 
    ] 
    } 

然後,更新您的測試,以正確找到您需要測試的代碼。

// Global function to test, not an AMD module 
    var parseF = require('app/myFunction.js'); 

現在,實習生應該能夠正確地找到代碼和測試。

+0

是的,我從那開始。現在再試一次。不起作用。使用該代碼,client.html正在查找「node_modules/intern-geezer/app/myFunction.js」,但未找到它。似乎Intern實際上是圍繞着AMD的假設而設計的。我似乎指向該文件的唯一方法是在單元測試中用「require('../../ src/myFunction.js');」這工作但似乎完全錯誤。 – Ben 2015-04-02 16:51:22

+0

你可以展示你試過的嗎?我轉載了[intern-tutorial](https://github.com/theintern/intern-tutorial),直到我將'loader.packages'改爲'[]' – nicknisi 2015-04-02 20:32:05