【发布时间】:2019-04-22 09:55:59
【问题描述】:
在我的组件 A 中,我有一个函数可以根据组件 B 发出的数据更新视图。我不想集成组件 B 并制作一个实际的组件,即使这对于这个测试来说太复杂了。
我只想调用函数并将数据传递给函数。问题是,将数据作为“事件”发送到组件 A 中的函数似乎不起作用:
it('should update the video with the data from the edit component', () => {
let event;
event.title = 'New Title';
event.description = 'New Description';
event.link = 'New Link';
event.videoCategory = 'New Category';
event.categories = '2';
event.a14Only = 0;
component.updateVideoCard(event);
fixture.detectChanges();
expect(component.videoTitle).toBe('New Title');
expect(component.videoLink).toBe('New Link');
expect(component.videoDescription).toBe('New Description');
expect(component.videoCategory).toBe('New Category');
expect(component.categoryID).toBe('2');
expect(component.a14Only).toBe('0');
expect(component.editDisabled).toBeTruthy();
});
该事件以“未定义”结束。我还尝试将其设为一个名为“事件”的 javascript 对象,其中包含键值对,但也没有成功。
component.updateEvent(data) 代码:
updateVideoCard(event) {
this.videoTitle = event.title;
this.videoDescription = event.description;
this.videoLink = event.link;
this.videoCategory = event.category;
this.categoryID = event.categories;
if (event.a14Only === 1) {
this.a14Only = true;
} else {
this.a14Only = false;
}
this.enableEditor = false;
this.notification.done(`${this.videoTitle} updated successfully.`);
}
【问题讨论】:
-
这看起来像是 DebugElement 类中 triggerEventHandler 的工作:angular.io/api/core/DebugElement#triggerEventHandler 如果您发布组件的代码,我可以给您一个代码示例。
-
你能和我们分享
component.updateVideoCard(event)吗? -
@fmontes 谢谢。我会马上试一试!当然!我用这段代码编辑了我的帖子。请注意,这是我们使用触发事件和数据的地方。
-
嗨@SebastianG,我们需要看到的是组件本身的代码,而不是对它们的测试。你能提供那个代码吗?
-
@fmontes 它就在上面的线程中。
标签: angular jasmine angular-test angular-event-emitter