Jos*_*ley 5 node.js jestjs babeljs
有没有人用es2015语法编写茉莉/开玩笑测试?它需要多少垫/ /填充/分散?
我无法正确导入功能.我有一个模块: ..../utils/TweetUtils.js
'use strict';
export function getListOfTweetIds (tweets) {
return Object.keys(tweets);
};
Run Code Online (Sandbox Code Playgroud)
和一个测试套件:
... ./__测试__/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();
});
});
Run Code Online (Sandbox Code Playgroud)
如果我用这样的东西破解控制台输出到套件中:expect(‘’).toBe(TweetUtils);
Jasmine报道了这个:
- Expected: '' toBe: {
default: {
getListOfTweetIds: Function
},
getListOfTweetIds: Function
}
Run Code Online (Sandbox Code Playgroud)
因此看起来导入语句正在做某事,但显然不是诚实地导入我的方法.当我使用命名函数语法导入时,我得到相同的结果: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语句被提升,这会导致 jest 自动模拟功能出现问题(在您告诉 jest 取消模拟之前模块已导入)。
TweetUtils.getListOfTweetIds已正确导入但被模拟,因此每个调用 return undefined。这就是为什么第三个期望失败了。
输入jest.dontMock语句可以工作(我测试了它),但对我来说听起来很脏(你真的想为每个测试模块创建一个“dontmock模块”文件吗?)
您必须使用require被测试模块的语法。代替
import * as TweetUtils from '../TweetUtils';
Run Code Online (Sandbox Code Playgroud)
经过
const TweetUtils = require('../TweetUtils');
Run Code Online (Sandbox Code Playgroud)
在修复之前,玩笑示例中的情况是相同的:jest#379
| 归档时间: |
|
| 查看次数: |
2014 次 |
| 最近记录: |