在Mithril中用于前端开发的API模拟,如jquery-mockjax

时间:2015-08-25 15:33:37

标签: frontend mithril.js mockjax

我在物联网框架中使用秘银。我试图将前端开发与后端API实现任务隔离开来。在jQuery中,我在Angular中使用了jQuery-mockjax和类似的机制。我理解的是那些库拦截ajax函数调用适当响应使用$ .mockjax(或类似函数)设置的数据

此处推荐的机制https://groups.google.com/forum/#!topic/mithriljs/FzpCPMfauf0并未赋予实施此功能的灵活性。对于选定的几个API,没有简单的方法可以使用mock。

查看代码后,我意识到,为了实现这一点,我需要访问'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 个答案:

答案 0 :(得分:0)

你可以通过猴子修补它来模拟m.request,或者在m.request和你的代码之间添加一层抽象,然后你可以模拟掉。