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, время: 08:28. |