babel-jest ES2015import报表

有没有人使用es2015语法编写茉莉花/笑话testing? 它需要多less匀场/ polyfill / gerrymandering?

我无法正确导入function。 我有一个模块: … / utils / TweetUtils.js

'use strict'; export function getListOfTweetIds (tweets) { return Object.keys(tweets); }; 

和一个testing套件:

… ./__testing__ / TweetUtils-test.js

 'use strict'; jest.dontMock('../TweetUtils'); import * as TweetUtils from '../TweetUtils'; describe('Tweet utilities module', () => { it('has access to the TweetUtils methods', () => { let testObj = {a:'a',b:'b',c:'c'}; // Passes expect(TweetUtils.getListOfTweetIds).toBeDefined(); // Passes expect(typeof TweetUtils.getListOfTweetIds).toBe('function'); // Fails expect(TweetUtils.getListOfTweetIds(testObj)).toBeTruthy(); }); }); 

如果我把一个控制台输出到这个套件中,像这样: expect('').toBe(TweetUtils);

茉莉花报道说:

 - Expected: '' toBe: { default: { getListOfTweetIds: Function }, getListOfTweetIds: Function } 

所以看起来import声明似乎在做某些事情,但是显然不是真正的导入我的方法。 当我使用命名的函数语法import {getListOfTweetIds} from '../TweetUtils';时得到了相同的结果: import {getListOfTweetIds} from '../TweetUtils'; 但是,如果我使用默认语法: import getListOfTweetIds from '../TweetUtils'; 第二个规范失败了 – 它不再是typeof function ,而是typeof object // => {default: Function}

我一直在梳理文档和开放问题。 几个月来一直有相关的问题,但已知的问题似乎不正确。 我试图导入我的jest.dontMock语句,以避免提升,大约: https : //github.com/babel/babel-jest/issues/16但没有骰子。

如果我修改了TweetUtils.js以使用module.exports = function…并使用const myFunction = require('../TweetUtils')将其引入到套件中,但它并不像我在引导真正的ES2015魔法。 现在每个人都只是在处理乱七八糟的工作,而生态系统赶上了新的语法呢?

正如你所说, import语句被吊起来,并导致问题与开玩笑自动嘲笑function(模块导入之前,你告诉笑话解开它)。

TweetUtils.getListOfTweetIds被正确导入,但是被嘲笑,所以每个调用都返回undefined 。 这就是为什么第三个期望失败。

导入jest.dontMock语句可以工作(我testing过),但对我来说听起来很脏(你真的想为每个testing模块创build一个“dontmock模块”文件吗?)

你必须使用被测模块的require语法。 更换

 import * as TweetUtils from '../TweetUtils'; 

通过

 const TweetUtils = require('../TweetUtils'); 

在我修好之前,我也是一样的笑话: 开玩笑#379