Javascript 流星反应测试

Javascript 流星反应测试,javascript,testing,meteor,ecmascript-6,jestjs,Javascript,Testing,Meteor,Ecmascript 6,Jestjs,简单的jest测试只是为了检查react组件是否可以渲染,但由于导入 从“Meteor/Meteor”导入{Meteor} 完全错误是 PASS imports/__partials/Navigation/__tests__/Navigation.jest.js PASS imports/__layouts/AuthLayout/__tests__/AuthLayout.jest.js FAIL imports/features/oAuth/ui/LoginLayout/__test

简单的jest测试只是为了检查react组件是否可以渲染,但由于导入

从“Meteor/Meteor”导入{Meteor}

完全错误是

 PASS  imports/__partials/Navigation/__tests__/Navigation.jest.js
 PASS  imports/__layouts/AuthLayout/__tests__/AuthLayout.jest.js
 FAIL  imports/features/oAuth/ui/LoginLayout/__tests__/LoginLayout.jest.js
  ● Test suite failed to run

    Cannot find module 'meteor/meteor' from 'index.js'

      at Resolver.resolveModule (node_modules/jest-resolve/build/index.js:142:17)
      at Object.<anonymous> (imports/features/oAuth/ui/LoginLayout/index.js:2:41)
      at Object.<anonymous> (imports/features/oAuth/ui/LoginLayout/__tests__/LoginLayout.jest.js:4:40)

 PASS  imports/staticTests/quickCheckboxTest/__tests__/CheckboxWithLabel.jest.js
 PASS  imports/staticTests/quickLinkTest/__tests__/Link.react.jest.js
passimports/\uuuuu partials/Navigation/\uuuuuu tests\uuuuuuuu/Navigation.jest.js
通过导入/AuthLayout/AuthLayout/AuthLayout测试/AuthLayout/AuthLayout.jest.js
导入失败/features/oAuth/ui/LoginLayout/_____/LoginLayout.jest.js
● 测试套件无法运行
无法从“index.js”中找到模块“meteor/meteor”
在Resolver.resolveModule(node_modules/jest resolve/build/index.js:142:17)
反对。(imports/features/oAuth/ui/LoginLayout/index.js:2:41)
反对。(imports/features/oAuth/ui/LoginLayout/____/LoginLayout.jest.js:4:40)
通过导入/staticTests/quickCheckboxTest/___;测试/CheckboxWithLabel.jest.js
通过导入/staticTests/quickLinkTest/__测试\u_/Link.react.jest.js
我将假设它是因为meteor没有构建,因此
meteor/meteor
不存在,任何帮助都将不胜感激

编辑
我的假设是正确的,这基本上是因为meteor没有构建npm模块。

您可以使用jest配置文件中的“moduleNameMapper”轻松地存根meteor模块:

"moduleNameMapper": {
  "^meteor/(.*)": "<rootDir>/meteorMocks.js"
}
那你就可以了

import { Meteor } from 'meteor/meteor';
在您的测试文件中


只需对所有需要模拟的模块(如
Tracker
ReactiveVar
)执行相同的操作。

好吧,所以我似乎是对的,要解决这个问题,我想我需要为jasmine编写一个驱动程序包,并在meteor运行时运行jest。。。我要用摩卡咖啡来代替:(老兄,这是一个老问题,但我喜欢你的答案,要尽快进行测试,然后批准!干杯人:)我遇到了同样的问题,发现了这个。我想和大家分享一下我的解决方案。下面是meteor的一篇博客文章,解释了如何使用jest进行测试。它指的是这个答案;-)您是否有一种模式可以在不导入的情况下使用全局变量执行相同的操作?它似乎并不特别适用于从第三方软件包加载的代码。虽然它对下划线有效,但很奇怪。还有@Michael_Scharf我知道你不久前发布了这篇文章,但你最近有没有遇到“core js”的问题?由于某种原因,Meteor强制核心js v2,而Jest/Babel现在使用v3(请参阅我们在这方面的进展)
import { Meteor } from 'meteor/meteor';