我在實習生中切齒,發現它很難。我已經簡單地將我的情況簡化爲帶有基本package.json和單個模塊的單個interntest
文件夾,其中包含我的intern.js和測試模塊。命令行上的實習生髮現nodemailer,但不是它所需的模塊
interntest/
package.json
src/
mymodule/
test/
intern.js
MyTest.js
我的package.json列出我需要在此目錄中運行節點的基本依賴關係:
{
"name": "interntest",
"version": "1.0.0",
"dependencies": {
"intern": "1.3.2",
"nedb": "~0.9.3",
"nodemailer": "~0.5.14",
"requirejs": "",
"dojo": "1.9.2"
}
}
npm install
並立即抓取這些依賴關係。
直接問題是我試圖使用的nedb
和nodemailer
模塊。我原以爲我可以簡單地宣佈他們intern.js像這樣:
loader: {
// Packages that should be registered with the loader in each testing environment
packages: [
'node',
'nedb',
'nodemailer',
而且在MyTest.js簡單地要求:
define([
'intern!tdd',
'intern/chai!assert',
'nedb',
'nodemailer'
], function (test, assert, Datastore, nodemailer) {
但似乎nedb
無法加載,儘管node_modules/nedb/package.json
正確指定main: 'index'
。
[email protected]:~/src/interntest$ ./node_modules/.bin/intern-client config=src/mymodule/test/intern suites=mymodule/test/MyTest
Defaulting to "console" reporter
Error: Failed to load module nedb/main from /home/neek/src/interntest/node_modules/nedb/main.js (parent: mymodule/test/MyTest)
at /home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:742:12
at fs.js:207:20
at Object.oncomplete (fs.js:107:15)
要嘗試解決這個問題,我最終這MyTest.js
:
define([
'intern!tdd',
'intern/chai!assert',
'nedb/index',
'nodemailer/lib/nodemailer'
這似乎是錯誤的,但周圍的初始故障加載任何的.js至少會從這些文件在所有模塊。然而,這似乎是致命的缺陷:
[email protected]:~/src/interntest$ ./node_modules/.bin/intern-client config=src/mymodule/test/intern suites=mymodule/test/MyTest
Defaulting to "console" reporter
Error: Attempt to require unloaded module lib/datastore
at contextRequire (/home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:255:12)
at req (/home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:30:10)
at /home/neek/src/interntest/node_modules/nedb/index.js:7:17
at Function.vm.runInThisContext (/home/neek/src/interntest/node_modules/intern/node_modules/istanbul/lib/hook.js:163:16)
at /home/neek/src/interntest/node_modules/intern/node_modules/dojo/dojo.js:745:8
at fs.js:266:14
at Object.oncomplete (fs.js:107:15)
因此,找到nedb/index.js
後,現在無法找到該文件,require('./lib/datastore')
中引用的相對路徑。
顯然我有一些基本的扭曲了。有人可以提醒嗎?
您是否看到過https://github.com/theintern/intern/wiki/Writing-Tests-with-Intern上的「Testing Non-AMD Code」部分? –