仅将关键字用于导入'export'单元测试



我正在使用Meteor,正在为集合编写单元测试。除了常规的 JS 函数之外,我还有用于集合的帮助程序方法。

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 function bar ({ return bar; });

现在在我的测试文件中,我会做类似的事情

import { bar } from '../collection'

我宁愿每次测试新函数时都不添加导出语句。有什么办法可以解决这个问题还是没什么大不了的?

我确实认为导出/导入是要走的路,但要回答您问题的第一部分:是的,您可以回退到 meteor 的原始范围,并将这些功能放在 meteor 的全球范围内,如下所示:

  • 不要将文件放在imports/文件夹中,而是放入项目中的另一个文件夹中,例如server/.
  • 将函数定义为:
    bar = function() { /* function body */ }
    
    这些变量被 meteor 解释为对项目是全局的,因此在使用前不需要导入。

也就是说,meteor 在 1.3 版本中引入了imports/文件夹和相应的导出/导入范例是有原因的。它避免了污染全局范围,并使人们更容易看到事物的定义位置。

最新更新