Ext.ux.ajax.SimManager - как готовить?
Здравствуйте.
Понадобилось мне некоторые запросы симулировать. Дело казалось несложным, но в результате система не взлетела. Может вы мне что подскажете... Итак, я подключаю нужный неймспейс в Application.js: requires: [ 'Ext.window.MessageBox', 'Ext.tip.QuickTipManager', 'Ext.ux.ajax.*', // <---------- ... ], Далее, в главном контроллере приложения инициализирую менеджер: var sim = Ext.ux.ajax.SimManager.init({delay: 50}); sim.register({ '/fake/success': { type: 'json', responseText: '{success:true}' } }); И после этого любой ажакс запрос умирает с ошибкой: TypeError: me.mgr is undefined SimXhr.js:62:13 ЧЯНТД? |
А там бага есть с этим me.mgr. Плюс всякие недоделки. Например doDelete не доделан до конца.
|
Вот заплатка:
/** * Исправление бага: в дефолтном симлете нет ссылки на менеджер. */ /* global Ext */ Ext.define("Element.sim.override.ux.ajax.SimManager", { override: "Ext.ux.ajax.SimManager", init: function() { var me = this; if (!me.ready) { if (!("defaultSimlet" in me)) { me.defaultSimlet = new Ext.ux.ajax.Simlet({ status: 404, statusText: "Not Found" }); // Исправление бага: в дефолтном симлете нет ссылки на менеджер. me.defaultSimlet.manager = me; } } var result = me.callParent(arguments); return result; } }); |
А я как раз запустил сим менеджер, без патчей. Нашел более другую конфигурацию:
var sim = Ext.ux.ajax.SimManager.init({delay: 50,defaultSimlet: null}); sim.register({ url: '/fake/success', type: 'json', responseText: '{success:true}' }); |
А этот SimManager отправляет реальный запрос? Делаю свое приложение на основе admin-dashboard и там как раз SimManager и JsonSimlet используются. При этом запросов в консоли Firebug никаких не отправляется...
Перенес в свое приложение. И вижу запрос вида: GET [url]http://myapp.lar/~api/search/users?_dc=1475127343520&page=1&start=0&limit=25[/url] С 404 ошибкой... естественно, ведь по такому адресу ничего и не живет! Соответственно, я не вижу данных в таблице. Как отучить его это делать? =) |
SimManager как раз сделан для того чтоб ничего не отправлять. Если затребован ажакс запрос по зарегистрированому в нем урлу то запрос не идет в сеть, а возвращает заданные с симменеджере данные. Ну а в вашем случае проверьте или зареганый урл совпадает с отправляемым.
|
Если вам нужно ответы симулировать в тестах, то можете подключить нашу копию Jasmine из ext/test/lib/jasmine.js и использовать MockAjaxManager. Он в конце файла живёт, простенькое такое чудище. Пример использования можно найти в ext/classic/classic/test/specs/ComponentLoader.js.
И вообще говоря для тестов сурово рекомендую использовать наш Jasmine вместо штатного от Pivotal. Багов оттуда выловлено уже |
Цитата:
Ну и в require надо было прописать класс с тестовыми данными, иначе тоже не работает. |
Часовой пояс GMT +3, время: 22:28. |