Angular2测试 - 未检测到变化

时间:2016-03-23 10:19:03

标签: testing jasmine angular

我正在尝试检查切换布尔值时是否显示下拉列表。 布尔值是组件

的输入
@Component({
    selector: 'dropdown',
    directives: [NgClass],
    template: `
        <div [ngClass]="{open: open}">
        </div>
    `,
})

export class DropdownComponent {
    @Input('open') open: boolean = false;
}

和测试

it('should open', injectAsync([TestComponentBuilder], (tcb: TestComponentBuilder) => {
    return tcb.createAsync(DropdownComponent)
    .then(fixture => {
        let el = fixture.nativeElement;
        let comp: DropdownComponent = fixture.componentInstance;

        expect(el.className).toEqual('');

        comp.open = true;
        fixture.detectChanges();
        expect(el.className).toEqual('open')
    });
}));

我猜测当布尔值是@Input?

时,必须要做一些不同的事情

1 个答案:

答案 0 :(得分:4)

您正在session.createCriteria(Person.class) .add(Restrictions.eq("id", personId)) .uniqueResult();上设置课程open,但需要检查<div [ngClass]="{open: open}">。那不一样。

这样的事情应该做你想做的事情

DropdownComponent

var div = fixture.nativeElement.querySelector('div');
expect(div.className).toEqual('open');

另请参阅How do I trigger a ngModel model update in an Angular 2 unit test?示例。