Sha*_*oon 10 javascript mocha.js node.js express gruntjs
我正在尝试使用mocha来测试我的快递应用.我的文件夹结构是:
myapp
|-app
|--models
|-test
|--mocha-blanket.js
|--mocha
|--karma
|-server.js
Run Code Online (Sandbox Code Playgroud)
server.js是我的快递服务器.之前我曾经有过options.require,但是文档说要使用blanket.js.我mocha-blanket.js是:
var path = require('path');
var srcDir = path.join(__dirname, '..', 'app');
require('blanket')({
// Only files that match the pattern will be instrumented
pattern: srcDir
});
Run Code Online (Sandbox Code Playgroud)
我的Gruntfile有:
mochaTest:
options:
reporter: "spec"
require: 'test/mocha-blanket.js'
# require: "server.js"
coverage:
options:
reporter: 'html-cov',
captureFile: 'mocha-coverage.html'
src: ["test/mocha/**/*.js"]
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
>> Mocha exploded!
>> MissingSchemaError: Schema hasn't been registered for model "Company".
>> Use mongoose.model(name, schema)
>> at Mongoose.model (/myapp/node_modules/mongoose/lib/index.js:315:13)
>> at Object.<anonymous> (/myapp/test/mocha/controllers/company.js:4:22)
>> at Module._compile (module.js:456:26)
>> at Module._extensions..js (module.js:474:10)
Run Code Online (Sandbox Code Playgroud)
我确定我做错了什么(或许多事情).但我不确定是什么.有任何想法吗?
我认为您的测试代码未正确初始化您的应用程序,特别是Mongoose架构和模型的初始化.
在mocha/controllers/company.js,您可能正在使用类似于此的代码:
var Company = mongoose.model('Company');
Run Code Online (Sandbox Code Playgroud)
但是,如果Company跳过模型的初始化(将模型与模式挂钩),那么这将引发您所获得的错误.
为了给出一个非常简短的独立示例,此代码将失败并出现相同的错误:
var mongoose = require('mongoose');
var Company = mongoose.model('Company');
Run Code Online (Sandbox Code Playgroud)
此代码,添加初始化,工作正常:
var mongoose = require('mongoose');
mongoose.model('Company', new mongoose.Schema());
var Company = mongoose.model('Company');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1996 次 |
| 最近记录: |