首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jest.mock和TypeScript,没有杂乱型铸造?

使用jest.mock和TypeScript,没有杂乱型铸造?
EN

Stack Overflow用户
提问于 2018-05-06 04:34:42
回答 2查看 7.4K关注 0票数 7

当我使用TypeScript编译器编译测试并使用Jest模拟时,我经常收到来自tsc的错误,例如:

代码语言:javascript
复制
error TS2339: Property 'mockImplementationOnce' does not exist on type
              'typeof readFile'.

从这个最小的测试:

代码语言:javascript
复制
jest.mock('fs');
// Run before the imports but does not alter types :(

import { readFile } from 'fs';
import { fnThatReadsFile } from './lib';

it('should read a file', () => {
  const err = {};
  readFile.mockImplementationOnce((_, callback) => callback(err, null));
  // ^^ error TS2339: Property 'mockImplementationOnce' does not exist on type 'typeof readFile'.

  fnThatReadsFile();
  // expect...
});

除以下问题外,还有什么解决办法:

TypeScript插件可以在jest.mock需要模块时执行模块增强吗?

EN

回答 2

Stack Overflow用户

发布于 2018-05-22 21:08:19

最简单的解决方案是像这样导入fs:const fs = require('fs'),并使用(fs.readFile as jest.Mock).mockImplementationOnce ...

票数 9
EN

Stack Overflow用户

发布于 2018-08-20 11:08:52

简单的解决方案是直接从模拟文件导入。它看上去不雅致,但很管用。

代码语言:javascript
复制
import { readFile } from '../__mocks__/fs';
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50196263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档