javascript - 仅使用 'export' 关键字导入单元测试

标签 javascript unit-testing testing meteor

我正在使用 Meteor 并正在为集合编写单元测试。除了常规 JS 函数之外,我还为该集合提供了 Helper 方法。

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'

我不想在每次测试新函数时都添加导出语句。有什么办法解决这个问题吗?或者这没什么大不了的?

最佳答案

我确实认为导出/导入是可行的方法,但要回答你问题的第一部分:是的,你可以回到 meteor 的原始范围,并将这些函数放在 meteor 的全局范围中,如下所示如下:

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

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

关于javascript - 仅使用 'export' 关键字导入单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59829506/

相关文章:

javascript - 在 iframe 元素中的 srcdoc 属性中使用链接时,链接相对于什么?

ios - PromiseKit 没有回调/解除分配? (阿拉莫菲尔)

javascript - 自定义 Jasmine 匹配器和 Protractor

javascript - 我怎样才能删除我的幻灯片宽度?以及如何在我的幻灯片中添加更多图片

Javascript for 循环每隔一段时间工作一次

ios - 如何在 iOS 上对不应该公开的功能进行单元测试?

java - 使用 maven : run jar before tests and terminate after 进行集成测试

testing - 在测试中获取 CSRF token

javascript - JQuery Window.Resize 切换 CSS 响应

python - Pytest 在固定装置之前调用 setup()