meteortesting mocha --full-app 正在执行 0 个测试
meteortesting mocha --full-app is executing 0 tests
我有基于wekan的流星应用https://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].*
的文件
可以(如您所习惯的那样)像往常一样导入其他文件。所有这些都可以在这个页面上找到: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()
区分测试和 full-app 测试。
如果某个部分不存在,则使用预先加载代替此部分。我们在我们的项目中使用预先加载进行测试,但更喜欢 non-eager 主应用程序的方式。因此我们只定义了mainModule
部分,而没有定义testModule
部分。
遗憾的是,这些细节在流星指南中没有得到很好的呈现。它们可以在 Meteor 1.7 的发行说明中找到:https://docs.meteor.com/changelog.html#changes-21
希望这有助于更好地了解文件加载的工作原理。
我有基于wekan的流星应用https://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].*
的文件
可以(如您所习惯的那样)像往常一样导入其他文件。所有这些都可以在这个页面上找到: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()
区分测试和 full-app 测试。
如果某个部分不存在,则使用预先加载代替此部分。我们在我们的项目中使用预先加载进行测试,但更喜欢 non-eager 主应用程序的方式。因此我们只定义了mainModule
部分,而没有定义testModule
部分。
遗憾的是,这些细节在流星指南中没有得到很好的呈现。它们可以在 Meteor 1.7 的发行说明中找到:https://docs.meteor.com/changelog.html#changes-21
希望这有助于更好地了解文件加载的工作原理。