API-макет в Mithril для разработки интерфейса, например, jquery-mockjax

Я использую мифрил в IoT. Я пытаюсь изолировать интерфейсную разработку от задач реализации API-интерфейса. В jQuery я использовал jQuery-mockjax и аналогичный механизм в Angular. Я понимаю, что эти библиотеки перехватывают вызов функции ajax и отвечают соответствующим образом данными, которые настроены с использованием $.mockjax (или аналогичных функций).

Механизм, рекомендуемый здесь https://groups.google.com/forum/, не дает гибкости для реализации этого. Нет простого способа использовать макет для нескольких избранных API.

Посмотрев код, я понял, что для его реализации мне нужно получить доступ к функции 'ajax' (или только к разделу обработки XHR), чтобы ее можно было переопределить с помощью моей собственной реализации, которая может высмеивать выбранные API. Проблема в том, что ajax является локальной функцией в библиотеке. Если он отображается как m.ajax, моя библиотека может переопределить его и получить необходимую мне функциональность.

У меня вопрос, есть ли лучший способ добиться того же? Если вы сделали подобные вещи, пожалуйста, поделитесь.

Моя структура кода будет примерно такой:

// in mithril-mockjax.js, implements mockjax function

m.mockjax = function (options) { … }

// in app-api-mocks.js

m.mockjax({
   method: GET,
   url: /sessions/123,
   response: { …}
});

m.mockjax({
   method: POST,
   url: /sessions,
   data: {},
   response: { … }
});

Два вышеупомянутых файла вставляются на страницу, когда я нахожусь в режиме разработки. Остальная часть кода остается прежней.

1 ответ

Вы можете сделать это либо издеваться m.request путем обезьяны-исправления или вы добавляете слой абстракции между m.request и ваш код, который вы затем можете издеваться.

Другие вопросы по тегам