【问题标题】:Why am I getting a `MissingSchemaError` when rearranging file structure?为什么在重新排列文件结构时会出现“MissingSchemaError”?
【发布时间】:2014-04-20 16:20:45
【问题描述】:
我正在尝试在 angular-fullstack 中编写测试,并且我将文件安排为:
测试:
当我运行grunt test:server 时,我得到了错误:
MissingSchemaError: Schema hasn't been registered for model "Article".
但是,如果我像这样重新排列文件:
测试:
然后一切正常。
这是为什么?我怎样才能让它与第一个文件结构一起工作?
【问题讨论】:
标签:
angularjs
testing
mongoose
mocha.js
【解决方案1】:
我今天遇到了同样的问题。
我用这个说法解决了
app = require('../../../server'),
因为 server.js 正在遍历模型文件夹中的所有 js-Files 并需要它们
脚手架自带的user/model.js-Test中不需要这个的原因,
是因为文件夹结构。
第一个测试是 server/thing/api.js - 需要服务器的测试。
之后执行 user/models.js 测试并且所有模式都已经加载。
在您的情况下,文章在 thing/api.js-Test 之前执行。
只需在文章文件夹前加一个“z”即可:-)
【解决方案2】:
为了让其他人了解这个问题,你必须把
var app = require('../../../server');
您要测试的模型的测试文件中的行。比如:
// You have to require "app" or shit blows up when you run "grunt serve"
var app = require('../../../server');
var should = require('should'),
mongoose = require('mongoose'),
Luggage = mongoose.model('Luggage');
...