如何从Angular2 DebugElement访问范围数据?

时间:2017-02-14 01:02:54

标签: angular angular2-testing

我想遍历DebugElements以确保元素描述的对象具有某些属性。例如,我可能希望确保显示器仅显示今天预约的患者,而不是可用的完整患者列表。

如何从调试元素访问范围数据?

例如:

注意:在下面的代码中,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." );
});

1 个答案:

答案 0 :(得分:1)

测试页面包含DebugElement(click here for DebugElement API)的API参考。

之前我曾查看过这个文档,但是我错过了名为“componentInstance”的属性是指附加到debug元素而不是测试范围的组件实例。

要访问DebugElement中使用的PatientSummary对象,我使用了以下代码:

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

var component : PatientListItemComponent = element.componentInstance;
var patient : PatientSummary = component.patientSummary;