陨石测试mocha--full-app正在执行0个测试 [英] meteortesting mocha --full-app is executing 0 tests
问题描述
我有基于Wekanhttps://github.com/wekan/wekan
的流星应用。
我已经编写了一些测试,它们位于/test
目录中。
我使用https://github.com/meteortesting/meteor-mocha
当我运行meteor test --driver-package meteortesting:mocha
时,测试运行但失败,因为我的代码未完全加载。
所以我尝试使用--full-app
参数。现在应用程序代码加载和运行完成,但是执行了0个测试。
这里出了什么问题?
如何使用所有代码执行测试?
推荐答案
我经常读到这个问题,所以让我来分析一下,因为有多种处理方法。顺便说一下-如果您有一个新项目,很有可能您已经避免了急切加载。
急切加载
此选项是在Meteor 1.3中引入的,此后一直是默认选项。
在此模式下运行meteor
或meteor 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].*
匹配的文件
避免紧急加载
从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
节。
希望这有助于更好地了解文件加载的工作原理。
这篇关于陨石测试mocha--full-app正在执行0个测试的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!