angular.io上的单元测试示例
在 难道不是这样吗angular.io上的单元测试示例,angular,unit-testing,Angular,Unit Testing,在 难道不是这样吗 comp.selected.subscribe((hero: Hero) => { selectedHero = hero; expect(selectedHero).toBe(expectedHero); }); 这不可能是因为茉莉花的缘故 如果您这样做: it('should raise selected event when clicked', () => { let selectedHero: Hero; comp.selecte
comp.selected.subscribe((hero: Hero) => {
selectedHero = hero;
expect(selectedHero).toBe(expectedHero);
});
这不可能是因为茉莉花的缘故 如果您这样做:
it('should raise selected event when clicked', () => {
let selectedHero: Hero;
comp.selected.subscribe((hero: Hero) => {
selectedHero = hero;
expect(selectedHero).toBe(expectedHero);
});
heroEl.triggerEventHandler('click', null);
});
而且,由于一个bug,没有捕获到事件单击
,那么您的期望将永远不会被测试,您也不会失败
通过在
单击后测试selectedHero
,测试确保如果没有处理单击事件,测试将失败,因为selectedHero
将是未定义的
确定,但它不应该在单击后立即运行expect,然后selectedHero=hero代码>?我认为您的错误是一个IDE警告,您可以通过添加=null代码>在selectedHero
声明中。期望值在事件触发器之后,因为订阅
实际上并没有触发事件,它在这里接收触发此事件时的数据。这就是使用heroEl.triggerEventHandler('click',null)所做的代码>一旦SobDescription被创建。是的,我也想到了。错误是由strictNullChecks
引起的。但我不明白的是,当我们运行代码时,如果我们先运行expect,我们如何才能得到selectedHero=hero
。它不应该是异步的吗?假设在500的组件中的事件处理程序中有一个debounceTime。它将始终运行expect first,然后运行'selectedHero=hero`否,因为subscribe
调用相当于“当选中时将发出某些内容,请在我的selectedHero变量中设置它”,它不是实际的赋值。我认为它是实际的赋值。我刚测试了一下,去BounceTime设置为500。我需要用fakeAsync包装它,并使用tick(500),这样expect将正确运行。
it('should raise selected event when clicked', () => {
let selectedHero: Hero;
comp.selected.subscribe((hero: Hero) => {
selectedHero = hero;
expect(selectedHero).toBe(expectedHero);
});
heroEl.triggerEventHandler('click', null);
});