【问题标题】:How do I run tests for a single model using mocha/mean.js?如何使用 mocha/mean.js 为单个模型运行测试?
【发布时间】:2015-06-18 20:48:53
【问题描述】:

我一直在研究 mean.js 测试。有一个繁琐的测试任务可以通过一个简单的grunt test 运行所有应用程序,但我不想每次都运行所有测试。

我已经在全球范围内安装了 mocha,并希望使用它为单个模型运行测试,但正在做...

mocha 'app/tests/mymodelname.server.model.js'

把我扔回去

"MissingSchemaError: 模式尚未注册模型 我的模型名”

为服务器运行单个测试的最简单方法是什么?

谢谢!

D

【问题讨论】:

  • 当使用(Mongoose)模型而没有先为其注册架构时会发生该错误。我不知道 MEAN.js,但您可能需要在使用/测试模型之前将模型初始化代码加载到测试文件中。
  • 是的,这就是我的想象,但它应该是一种无需修改我所有测试文件的方式。
  • Mocha 有一个-r/--require 命令行选项,您可以使用它来加载数据库初始化模块。

标签: javascript mocha.js meanjs


【解决方案1】:

之前的回复完全正确,在 grunt 中定义了一个 mongoose 加载程序并传递到“grunt test”任务中。看看 gruntfile.js:grunt.registerTask('test', ['env:test', 'mongoose', 'mochaTest', 'karma:unit']);

我已经四处寻找很好的解决方案,应该有一个“--grep”开关可以与 Mocha 一起使用,但是通过 grunt 传递它超出了我目前的技能范围 - 欢迎提出建议!

我确信有一种非常棒的方法可以做到这一点,但现在我只想使用一个测试来限制测试文件配置列表。我已修改 'config\assets\test.js' 以仅指向一个文件。它不漂亮,我可能会因为提出它而被烧毁,但它现在对我有用。

【讨论】:

    【解决方案2】:

    正如 robertklep 所提到的,最好的方法是使用 mocha 中的 --require 选项来要求 server.js 文件(其中包括数据库模块所需的所有初始化和其他内容)。

    所以在这种情况下,如果您正在运行 mean.js 应用程序,正确的做法是:

    mocha 'app/tests/mymodelname.server.model.js' -r server.js
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 2012-06-05
      • 2019-11-07
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2016-11-19
      相关资源
      最近更新 更多