Насмешка над импортом объекта JSON из модуля Common JS в TypeScript - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть один модуль, который я по сути наследую и не могу легко изменить, который я назову other-module. other-module выполняет следующие действия в index.js

module.exports={
    "key1": "value1",
    "key2": "value2",
    // ....
};

Существует также файл index.d.ts с пустым интерфейсом

export interface SomeJsonObject {

}

(в настоящее время я подавляю ошибки, когда Я пытаюсь прочитать из объекта, пустой интерфейс - просто получить код для компиляции на этом этапе)

В моем машинописном коде я могу импортировать это следующим образом

import SomeJsonObject from "other-module";

И это работает, и я могу читать из объекта JSON, как и ожидалось.

Однако в моих модульных тестах для моего машинописного кода я хочу смоделировать SomeJsonObject, потому что этот объект будет неизменно изменить, и я не хочу, чтобы мои тесты, которые будут проверять, как я читал из него, были привязаны к значениям, которые находятся в другом модуле для value1, value2 et c ...

Так что я хочу макет этого импорта.

В моем тестовом файле для моего кода TypeScript я пробую следующее

import SomeJsonObject from 'other-module';
jest.mock('other-module');

(SomeJsobObject as jest.Mock).mockReturnValue(
    {
        "key1": "mockValue1",
        "key2": "mockValue2",
        // ....
    }
);

Однако в приведенном выше примере я получаю

TypeError: SomeJsobObject.mockReturnValue is not a function

It похоже, что то, что я делаю, должно работать, когда мой other-module экспортирует функцию, но что мне делать, когда она экспортировать JSON объект, как я делаю?

...