我在物联网框架中使用秘银。我试图将前端开发与后端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: { … }
});
当我处于开发模式时,上面的两个文件会插入到页面中。其余代码保持不变。
答案 0 :(得分:0)
你可以通过猴子修补它来模拟m.request
,或者在m.request
和你的代码之间添加一层抽象,然后你可以模拟掉。