Насмешливый шутник сети - как мне не DRY мой форматер? - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть сетевой модуль для проверки связи с устаревшей базой данных с данными в нескольких форматах, и я хочу стандартизировать его здесь, в сетевом модуле, прежде чем передавать его в приложение, чтобы мое приложение могло ожидать определенный формат данных (не хочу старый, плохой формат, загрязняющий мою бизнес логи 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, так и из строго типизированного фона, но это моя первая попытка использовать машинопись:)

1 Ответ

0 голосов
/ 05 апреля 2020

Даже если он не используется, несколько мест извлекают его, следуя принципу единой ответственности, в свою собственную конструкцию. Вы проверяете все логи форматирования c в Formmater Test, а не в User API Test. Кроме того, вы можете проверить интеграцию Formatter с пользовательским API в тесте интеграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...