这对我不起作用。请让Plunkr在下面工作。
describe("trying a test", () => {
beforeEach(() => {
TestBed.initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting());
TestBed.configureTestingModule({
declarations: [myCmp, ChildCmp]
});
});
it("test should work", () => {
const fixture = TestBed.createComponent(myCmp);
const div = fixture.debugElement.children[0];
const childCmp = div.queryAll(By.directive(ChildCmp));
const divEl = div.queryAll(By.css('div'));
divEl[0].triggerEventHandler('click', <Event>{});
fixture.detectChanges();
expect(childCmp[0].nativeElement.textContent).toBe("updated value");
});
});
答案 0 :(得分:0)
这不再是我的问题。在大多数情况下(我将在下面概述一个例外),我的父组件和子组件都在我的真实应用程序代码中更新,但我还没有更新Plunkr。
我只是在模板上单击某些内容时调用的spared on parent组件方法上使用.and.callThrough()。而不是一个简单的间谍。
我确实遇到了ngfor渲染子组件未更新的问题。这是我的另一个问题:Angular 2 unit testing: Make ngFor rendered, child components' templates change?