首页 > 解决方案 > 如何从类型定义中模拟声明的类?

问题描述

我有以下代码试图测试一些使用 API 的代码。我还尝试通过执行以下操作来模拟 API:

import { mocked } from 'ts-jest/utils';
import joplin from '../api/index'

jest.mock('../api/index');

import { NoteSelectWindow } from "../src/NoteSelectWindow";


describe('NoteSelectWindow', () => {
    
    const mockedJoplin = mocked(joplin, true);

    it("dfdf", async () => {
        mockedJoplin.views.dialogs.create.mockResolvedValue("testId");

        let dlg = new NoteSelectWindow();
        await dlg.init("sdfsdf");
        expect(mockedJoplin.require).toHaveBeenCalled();
        expect(dlg.handle).toBe("testId");
    });
});

但是,当我运行测试时,我在 api index.ts 中收到以下错误:

这是index.ts

import type Joplin from './Joplin';

declare const joplin: Joplin;

export default joplin;

我假设它破坏的原因是因为在索引中导入的乔普林实际上是一个类型定义而不是一个真正的类。如何解决这个问题?知道我无权访问实际的 .js 文件。

标签: javascripttypescriptjestjsts-jest

解决方案


推荐阅读