javascript - 仅将“export”关键字用于导入单元测试
问题描述
我正在使用 Meteor 并正在为 Collection 编写单元测试。除了常规的 JS 函数之外,我还有用于集合的 Helper 方法。
IE
Collection.helpers({
helperFn: function () {
return 'foo';
}
});
//And in the same file
function bar() {
return "bar";
}
然后在我的测试文件中我有类似的东西
import { Collection } from '../collections'
//Use Factory or Stub to create test Document
//This then works just fine and I can assert, etc..
testDoc.helperFn
我的问题是只想测试常规的“bar”JS 函数。使用 ES6 类这没什么大不了的,因为这样我就可以导出整个类并使用它的实例调用任何函数。但是对于 Meteor,我发现访问该函数的唯一方法是使用“export”关键字。
所以在我的收藏文件中
export function bar ({ return bar; });
现在在我的测试文件中,我会做类似的事情
import { bar } from '../collection'
每次测试新功能时,我都不想添加导出语句。有什么办法可以解决这个问题还是没什么大不了的?
解决方案
我确实认为导出/导入是要走的路,但要回答您问题的第一部分:是的,您可以退回到流星的原始范围,并将这些函数放在流星的全局范围内,如下所示:
- 不要将文件放在文件
imports/
夹中,而是放在项目中的另一个文件夹中,例如server/
. - 将函数定义为:
这些变量被meteor解释为项目的全局变量,因此在使用前不需要导入。bar = function() { /* function body */ }
也就是说,meteorimports/
在 1.3 版本中引入了文件夹和相应的导出/导入范例是有原因的。它避免了污染全局范围,并且更容易查看定义的位置。
推荐阅读
- linux - 如果目录已经使用 shell 脚本存在,如何避免 mkdir?
- azure - Azure Functions - 返回没有输出绑定的值?这可能吗?
- javascript - 错误:找不到模块 'src/domain/email/Email'
- mongodb - mongodb 是否在批量组之间锁定?
- html - 使 Bootstrap 滑块 1 列 < 768px
- ios - 在 SwiftUI 中将 NavigationButton 与服务器请求一起使用
- javascript - 减速器函数无法在减速器对象中创建键值对
- karate - 在 js 代码中循环时,第二个功能看不到第一个功能中定义的变量
- android - 使用 OpenGL ES 和 MediaCodec 将视频和照片与转场合并
- python - 如何删除熊猫数据框中的重复标签?