サーバーコード(これらの推奨事項に従う)とクライアントコード(たとえば、私のこのプロジェクトで定義されている従来のアプリ)の両方をテストするために、私はかなり長い間インターンと戦ってきました。
Intern 構成ファイルには以下が含まれます。
loader: {
packages: [
{ name: 'dojo', location: './libs/dojo' },
{ name: 'server', location: './server' }
]
},
ただし、dojo パッケージの場所は常に無視されます。報告されたエラーは次のとおりです。
$ node node_modules/intern/client.js config=intern suites=server/model/tests/News
Defaulting to "console" reporter
Error: Failed to load module dojo/_base/declare from <root>/dojo/_base/declare.js (parent: server/model/Ne
ws)
at <root>\node_modules\intern\node_modules\dojo\dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)
出力を簡略化するために <root> 部分を編集しました。
私の現在の回避策は、dojo フォルダーを <root> レベルでコピーすることですが、それは不便です...
私の現在のフォルダ構造は次のとおりです。
<root>
|- client
|- libs
| |- dojo
| |- ...
|- node_modules
| |- grunt
| |- intern
| |- ...
|- server
|- dao
| |- tests
|- model
| |- tests
|- ...
どこが間違っていますか?
更新:どこで読んでも(ここのように)、構成は拡張子付きのファイル名ではなく、MID として指定されています。「 config=intern.js 」を指定してコマンドを実行すると、構成が正しく処理されます (「client.js」をハッキングして構成内容をログに記録しました)。注: Windows マシンで Node.js/Intern を実行しています...
追加情報:テストを処理するために最低限必要なコンテンツは次のとおりです。
define({
loader: {
packages: [
{ name: 'dojo', location: './libs/dojo' },
{ name: 'server', location: './server' }
]
},
suites: [ 'server/allTests' ]
});