2017-02-14 2 views
0

Я хотел бы пройти через DebugElements, чтобы гарантировать, что объект, описанный элементом, имеет определенные свойства. Например, я могу быть уверен, что на дисплее отображаются только те пациенты, у которых сегодня назначена встреча, а не полный список доступных пациентов.Как мне получить доступ к данным области из элемента Angular2 DebugElement?

Как получить доступ к данным области видимости из элемента отладки?

Например:

Примечание: В приведенном ниже коде на page переменные пакеты частые запросы отладки элементов в одном классе. В этом случае он предоставляет элементы отладки для двух реализаций одного и того же компонента списка, и каждый компонент списка отображает другой список пациентов на основе критериев, не относящихся к этому вопросу.

it("lists zero patients from other staff members that the staff member who is logged in",()=>{ 
    var element : DebugElement, list : any; 
    var user : string = component.credentials.username; 
    var notMyPatientCount : number = 0; 
    for (list of [page.primaryPatients, page.patientBacklog]){ 
     for(element of list){ 
      var patient = /* I need something to put here to extract the PatientSummary object that is displayed in this element */; 
     } 
    } 
    expect(notMyPatientCount).toBe(0, "When filtered, the display only holds patients assigned to the current user."); 
}); 
+0

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

+0

В моей первоначальной реализации использовались услуги Pipe для выполнения этой работы, но трубы вызывали ошибки с неверными ссылками на зоны или что-то еще как это. Я попытался решить эту проблему на пару дней, а затем нашел реализацию, подобную приведенной выше, и понял, что могу обойти Трубы, которые причиняют мне столько неприятностей. –

+1

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

ответ

1

Страница тестирования имеет ссылку API для DebugElement (click here for DebugElement API).

Я уже рассматривал эту документацию, но я пропустил тот факт, что атрибут, называемый «компонентное состояние», относится к экземпляру компонента, прикрепленному к элементу отладки, а не к области тестирования.

Чтобы получить доступ к объекту PatientSummary используется в DebugElement, я использовал следующий код:

/** 
* 
* @Component(...) 
* export class PatientListItemComponent { 
*   ... 
*   patientSummary : PatientSummary; 
*   ... 
* } 
* 
*/ 

var component : PatientListItemComponent = element.componentInstance; 
var patient : PatientSummary = component.patientSummary; 
Смежные вопросы