陨石测试mocha--full-app正在执行0个测试 [英] meteortesting mocha --full-app is executing 0 tests

查看:29
本文介绍了陨石测试mocha--full-app正在执行0个测试的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有基于Wekanhttps://github.com/wekan/wekan的流星应用。

我已经编写了一些测试,它们位于/test目录中。

我使用https://github.com/meteortesting/meteor-mocha

进行测试

当我运行meteor test --driver-package meteortesting:mocha时,测试运行但失败,因为我的代码未完全加载。

所以我尝试使用--full-app参数。现在应用程序代码加载和运行完成,但是执行了0个测试。

这里出了什么问题?

如何使用所有代码执行测试?

推荐答案

我经常读到这个问题,所以让我来分析一下,因为有多种处理方法。顺便说一下-如果您有一个新项目,很有可能您已经避免了急切加载。

急切加载

此选项是在Meteor 1.3中引入的,此后一直是默认选项。

在此模式下运行meteormeteor run时,将自动加载文件夹/imports以外的所有文件。还有其他一些规则,都可以在这个页面上找到:https://guide.meteor.com/structure.html#load-order

在此模式下运行测试时,应用不同的规则,实际上没有加载与以下表达式不匹配的文件:

  • meteor test仅加载与*.test[s].**.spec[s].*匹配的文件
  • meteor test --full-app仅加载与*.app-test[s].**.app-spec[s].*匹配的文件
可以照常导入其他文件(就像您习惯的那样)。所有这些都可以在此页面上找到:https://guide.meteor.com/testing.html#test-modes

避免紧急加载

从Meteor 1.7开始,在讨论了如何摆脱这个特殊的/imports目录(https://github.com/meteor/meteor-feature-requests/issues/135)之后,引入了一种新的方式:

当项目的package.json文件中存在类似以下内容的部分时,Meteor将仅以各自的模式加载这些文件:

"meteor": {
  "mainModule": {
    "client": "client/main.js",
    "server": "server/main.js"
  },
  "testModule": {
    "client": "client/tests.js",
    "server": "server/tests.js"
  }
}

在此模式下,您可以通过Meteor.isAppTest()区分测试和全应用测试。

如果某个节不存在,则对该节使用急切加载。在我们的项目中,我们对测试使用急切加载,但对于主应用程序,我们更喜欢非急切加载方式。因此,我们仅定义mainModule节,而不定义testModule节。

遗憾的是,这些细节在"流星指南"中没有很好地呈现出来。它们可以在Meteor 1.7的发行说明中找到:https://docs.meteor.com/changelog.html#changes-21

希望这有助于更好地了解文件加载的工作原理。

这篇关于陨石测试mocha--full-app正在执行0个测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆