为什么在重新排列文件结构时会出现“MissingSchemaError”?

时间:2014-03-15 07:22:53

标签: angularjs testing mongoose mocha

我正在尝试在angular-fullstack中编写测试,我将文件排列如下:

  

测试:

     
      
  • 客户端   
        
    • 服务器
    •   
    • 用户   
          
      • model.js
      •   
    •   
    • 文章   
          
      • article.js
      •   
    •   
  •   

当我运行grunt test:server时,我收到错误:

 MissingSchemaError: Schema hasn't been registered for model "Article".

但是,如果我重新排列这样的文件:

  

测试:

     
      
  • 客户端   
        
    • 服务器
    •   
    • 用户   
          
      • model.js
      •   
      • article.js
      •   
    •   
  •   

然后一切正常。

这是为什么?如何使用第一个文件结构?

2 个答案:

答案 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"在文章夹之前,它将起作用: - )