У меня есть сетевой модуль для проверки связи с устаревшей базой данных с данными в нескольких форматах, и я хочу стандартизировать его здесь, в сетевом модуле, прежде чем передавать его в приложение, чтобы мое приложение могло ожидать определенный формат данных (не хочу старый, плохой формат, загрязняющий мою бизнес логи c). Я борюсь с тем, как передавать фиктивные данные через этот сетевой модуль, особенно в том, что касается форматера. Вот что я имею в виду:
// User API Network Module
// UserAPI.ts
export const getUser = (uid: String, callback: (GetUserResponse) => void): void => {
// Do network call here and format the data into a typescript type
// matching the GetUserResponse structure by business logic expects
callback(formattedData)
}
В моем тестовом файле я могу легко смоделировать этот вызов с помощью:
import { getUser } from "./UserAPI"
jest.mock("./UserAPI", () => ({
getUser: (uid: String, callback: (GetUserResponse) => void) => {
const mockedUserData = require("./mockUser.json")
// But how do I format it here?
return formattedMockedUserData
},
}))
Я могу создать функцию форматирования в моем файле UserAPI.ts
, экспорт и запустить его в шутку, но мне интересно, если это лучшая практика, потому что технически утечка деталей реализации UserAPI
. И я указываю на это только потому, что ни один другой файл не заботится о том, как UserAPI
форматирует, кроме UserAPI
. Если мне придется пропустить его для тестирования, я сделаю это. Но есть ли лучший способ смоделировать сетевой вызов и запустить его через средство форматирования, не раскрывая дополнительных подробностей реализации?
И, пожалуйста, будьте осторожны с моей машинописью - я пришел как из JS, так и из строго типизированного фона, но это моя первая попытка использовать машинопись:)