首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用jest模拟部分类AdmZip

使用jest模拟部分类AdmZip
EN

Stack Overflow用户
提问于 2022-06-23 20:35:50
回答 1查看 118关注 0票数 0

试过所有的例子,但似乎都没有效果,最有希望的例子是下面的例子,但实际上它也不起作用。我希望实现的是使用除writeZipupdateFile以外的所有常规的writeZip函数,这些函数应该被模仿,并将使用它们的间谍进行检查。

但是目前我得到的错误是admZip.getEntries()不是一个函数,所以我的模拟的actual部分似乎是错误的,有什么提示我如何在模拟中得到实际的getEntries-method吗?

代码语言:javascript
复制
jest.mock('adm-zip', () => {
  const actual = jest.requireActual('adm-zip');
  return function(): AdmZip {
      return {
        ...actual, // <--- was hoping this will integrate the other original methods like getEntries()
        writeZip: jest.fn(),
        updateFile: jest.fn()
      }
  }
});

另一种办法是:

代码语言:javascript
复制
jest.mock('adm-zip', () => {
  const actual = jest.requireActual('adm-zip');
  return jest.fn().mockImplementation(() => ({
    ...actual,
    writeZip: jest.fn(),
    updateFile: jest.fn()
  }))
});

完全是随机的

代码语言:javascript
复制
jest.mock('adm-zip', () => {
  const actual = jest.requireActual('adm-zip');
  return {
    __esModule: true,
    ...actual,
    AdmZip: jest.fn().mockImplementation(() => {
      return {
        ...jest.requireActual('adm-zip'),
        writeZip: jest.fn(),
        updateFile: jest.fn()
      }
    })
  }
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-01 18:06:22

不确定纯粹的玩笑版本会是什么,但我用另一个包实现了“部分模拟”:MockProxy from jest-mock-extended

首次进口:

代码语言:javascript
复制
import { mock, MockProxy } from 'jest-mock-extended';

然后,只定义要实际执行的方法:

代码语言:javascript
复制
const admZip: MockProxy<AdmZip> = mock<AdmZip>({
  getEntries: new AdmZip(path.join('./apps/backend/test/data/unittest/sample-ibans.zip')).getEntries,
});

然后,我们使用MockProxy作为实际zip读取方法的返回:

代码语言:javascript
复制
jest.spyOn(FileHandler, 'createAdmZip').mockResolvedValue(admZip);

现在我们可以通过读取实际的zip来测试所有zip功能,但是所有的写和更新函数仍然是模拟的,所以zip不会被更改,但是代码仍然在运行。

现在所有的方法都是模拟的,除了getEntries,因为AdmZip是一个类,我们不得不硬编码我们的压缩文件路径,但是您可以用方法重新创建模拟,并随时更改路径。所以这就是我的“解决办法”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72736277

复制
相关文章

相似问题

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