2016-09-20 2 views
1

Вопрос: Как вы проведете SPA-тестирование со множеством настраиваемых элементов, которые создаются несколько раз и могут их получить с помощью идентификатора unqiue?E2E проверяет несколько пользовательских элементов по id

Проблема заключается в том, чтобы уникально идентифицировать пользовательские элементы. Таким образом, вы не можете поместить идентификатор внутри пользовательского элемента, как это:

<customelement id="MyCustomElement"></customelement> 

, потому что, как вы бы создать экземпляр Обычай элемент несколько раз идентификатор будет добавлен дважды в DOM.

Aurelia использует транспортир как инструмент для тестирования E2E. Включая локализацию Aurelia для получения/проверки значения. Bind = «VMproperty». Elment (by.valueBind ("VMproperty")) не будет работать для нескольких пользовательских элементов, имеющих VMProperty.

Мы думаем о создании somekind breadcrumb, который включает в себя родительский идентификатор, создавая уникальный идентификатор для этого конкретного пользовательского элемента.

Я уверен, что люди будут использовать Aurelia для больших проектов/сайтов и требуют надлежащего тестирования E2E. Пример для Aurelia HUB: http://aurelia.io/hub.html#/doc/article/aurelia/testing/latest/end-to-end-testing/5 подходит для первоначальной настройки, но не указывает, как настроить E2E на пользовательские элементы mulitple.

Любая помощь будет оценена :)

ответ

0

Это звучит, как вы могли бы идти вниз к пользовательскому элементу из родительского элемента с $('#parentID customelement'), если есть только один из них.

Если у вас есть несколько пользовательских элементов внутри родителя, вы можете просто получить их все с помощью $('#parentID').$$('customelement') и выполнить итерацию через ElementArrayFinder.

Если вам не нужно беспокоиться о пользовательских элементах внутри других родительских элементов, вы можете просто использовать $$('customelement'), чтобы захватить все из них в ElementArrayFinder.

Чтобы пройти через каждый элемент элемента ElementArrayFinder, когда вы не знаете порядок, я имею тенденцию идти двумя путями.

Первый способ фильтрует ElementArrayFinder вниз к ElementFinder вы хотите:

var item = $$('.someclass').filter((elem)=>{ 
    return elem.isWhatIWant(); //chose any qualifier that returns a boolean 
}).first(); 
expect(item.isWhatIWant()).toBeTruthy(); 

Второй способ переходит и проверяет каждый элемент:

$$('.someclass').each((elem)=>{ 
    expect(elem.isWhatIWant()).toBeTruthy(); 
}) 

я использую второй путь более часто, так как вы всегда можете добавить квалификаторы в каждом, чтобы определить, какие элементы должны быть проверены, но первый способ может быть лучше, если вы хотите сохранить ElementFinder для последующего использования.

+0

mmm, как бы вы выделили 2 customelements изнутри родителя? Как ваш второй пример, вероятно, вы получите первый? Что делать, если вы хотите протестировать второй кустометер? Если у обоих есть уникальный идентификатор, вы можете протестировать контент для первого customelement и второго customelement. – Henry

+0

$$ означает, что он извлекает все пользовательские элементы как объект ElementArrayFinder. Если вы знаете заказ, вы можете получить конкретный customelement с x.get (index), когда x является вашим ElementArrayFinder. Если вы не знаете порядок, вы можете использовать вызов x.then() для итерации по извлеченному массиву ElementFinders. – SilentLupin

+0

Спасибо за разъяснение об использовании $$ и ElementArrayFinder. Допустим, если вы не знаете порядок кустарников в ElementArrayFinder.Вам все равно нужно каким-то образом проверить, что вы сравниваете/проверяете правильность кустомера. У меня такое ощущение, что я должен добавить что-то уникальное для своих кустов в поколении и иметь возможность фильтровать каждый кустометер и проверять его. Как тестируются другие SPA E2E? Широкий уникальный идентификатор webapp? – Henry

Смежные вопросы