【发布时间】:2016-02-26 06:10:35
【问题描述】:
有没有人使用 es2015 语法编写 jasmine / jest 测试?它需要多少 shimming / polyfill / gerrymandering?
我无法正确导入函数。我有一个模块: …./utils/TweetUtils.js
'use strict';
export function getListOfTweetIds (tweets) {
return Object.keys(tweets);
};
和一个测试套件:
…./__tests__/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’;
第二个规范失败了——不再是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 魔法。在生态系统赶上新语法的同时,每个人现在都只是在处理不稳定的变通方法吗?
【问题讨论】: