【问题标题】:Why am I getting a `MissingSchemaError` when rearranging file structure?为什么在重新排列文件结构时会出现“MissingSchemaError”?
【发布时间】:2014-04-20 16:20:45
【问题描述】:

我正在尝试在 angular-fullstack 中编写测试,并且我将文件安排为:

测试:

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

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

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

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

测试:

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

然后一切正常。

这是为什么?我怎样才能让它与第一个文件结构一起工作?

【问题讨论】:

    标签: 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');
      
      ...
      

      【讨论】:

        猜你喜欢
        • 2012-11-04
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 2018-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多