#unit-testing #extjs #frontend #cypress #uniqueidentifier
Вопрос:
Я ищу, чтобы добавить код данных в мои элементы в моей EXTJ, но, похоже, ничего не работает. Фрагмент, в который я хочу его добавить, следующий:
items: [{
xtype: 'values',
name: 'value_x',
hideTrigger: true,
}
Весь код работает, тогда проблема в том, что он не может его распознать. Я уже пробовал эти коды, но любой из них работает:
listeners: {
afterrender: function(cmp) {
cmp.getEl().set({
"data-intro": 'some text',
"data-step": 1
});
}
}
autoEl: {
tag: 'div',
'data-step': '1'
}
Я заменяю шаг с данными и вводную часть данными, но ничего.
Проблема в том, что он не возвращает никаких ошибок, но data-cy (я пробовал также использовать атрибут данных и ввод данных) не помещается в DOM, когда я открываю локальный хост.
Ответ №1:
Обновление: Я решил проблему, используя просто
autoEl: {
'data-cy': ’1'
}
Без указания тега.
Ответ №2:
К сожалению, вы не сообщаете нам, какую версию вы используете. Из примера я беру, что это «КЛАССИЧЕСКИЙ» фреймворк, и я предполагаю, что это последняя версия.
Это работает в моей скрипке:
Ext.define('Fiddle.Container', {
extend: 'Ext.Container',
xtype: 'custom',
autoEl: {
tag: 'div',
'data-step': '1',
'data-cy': 2
}
});
Если вы не добавите тег, он будет использоваться автоматически div
, так что ваш ответ тоже будет работать. Но для удовольствия обменяйтесь div
blockquote
, и вы увидите, как это работает более подробно.
В «СОВРЕМЕННОМ» вы можете использовать:
Ext.define('Fiddle.Custom', {
extend: 'Ext.Component',
xtype: 'custom',
template: [{
reference: 'bodyElement',
tag: 'blockqoute',
cls: Ext.baseCSSPrefix 'body-el',
uiCls: 'body-el',
'data-cy': 1
}],
});
Ответ №3:
Есть лучший способ сделать это. Вы также можете расширить это с помощью любого другого значения.
{
xtype: 'button',
text: 'Login',
handler: 'doLogin',
testId: 'loginBtn',
}
а затем переопределить Ext.Component.js
Ext.define('Portal.overrides.Component', {
override: 'Ext.Component',
/**
* convert testId into data-cy
*/
onRender() {
this.callParent(arguments);
const { el } = this;
const testId = this.testId || this.itemId || '';
if (el amp;amp; el.dom amp;amp; !Ext.isEmpty(testId) amp;amp; Ext.isEmpty(this.inputAttrTpl)) {
const attId = this.cyAtt || 'data-cy';
el.dom.setAttribute(attId, testId);
}
},
});
```
Got that code from here: [Github][1]
[1]: https://github.com/rjben/Coworkee/blob/master/client/overrides/Component.js