我正在尝试在angular-fullstack中编写测试,我将文件排列如下:
测试:
- 客户端
- 服务器
- 用户
- model.js
- 文章
- article.js
当我运行grunt test:server
时,我收到错误:
MissingSchemaError: Schema hasn't been registered for model "Article".
但是,如果我重新排列这样的文件:
测试:
- 客户端
- 服务器
- 用户
- model.js
- article.js
然后一切正常。
这是为什么?如何使用第一个文件结构?
答案 0 :(得分:1)
对于跟随此问题的其他人,要完全清楚,你必须把
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');
...
答案 1 :(得分:0)
我今天遇到了同样的问题。
我用这句话解决了它
app = require('../../../server'),
因为server.js正在迭代模型文件夹中的所有js-Files并需要它们
脚手架附带的user / model.js -Test中不需要这样做的原因, 是因为文件夹scruture。 第一个测试是server / thing / api.js - 需要服务器的测试。 之后执行user / models.js测试,并且已经加载了所有模式。
在您的案例中,文章在事物/ api.js-Test之前被执行。 只要放一个" z"在文章夹之前,它将起作用: - )