Я хотел бы пройти через 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.");
});
Это просто наблюдение не ответ, но мне кажется, эта логика принадлежит службе и что тесты для он входит в набор тестов для этой службы. Я честно смущен, потому что вижу много таких тестов, и я не понимаю их цели. Я понимаю, что компонент фильтрует данные, но, может быть, этот фильтр должен быть в сервисе ... Я честно не знаю –
В моей первоначальной реализации использовались услуги Pipe для выполнения этой работы, но трубы вызывали ошибки с неверными ссылками на зоны или что-то еще как это. Я попытался решить эту проблему на пару дней, а затем нашел реализацию, подобную приведенной выше, и понял, что могу обойти Трубы, которые причиняют мне столько неприятностей. –
Я вижу, что это имеет смысл. Труба на самом деле не является сервисом, это скорее функция, которую вы помещаете в пространство имен всех представлений. Я думал больше, что вы захотите ввести регулярный сервис и просто использовать его, поскольку услуги гораздо проще тестировать, чем компоненты. Спасибо за объяснение, кстати. –