【发布时间】:2022-01-23 03:30:37
【问题描述】:
如何使用 postMessage 测试此方法
navigateTo = (): void => {
window.parent.postMessage('NESTED_NAVIGATION', 'target_origin');
}
我想检查当我调用navigateTo 方法时是否触发了 postMessage 事件
我试过了,但没用
it('should post message on click', async () => {
spyOn(component, 'navigateTo');
let postMessageSpy = spyOn(window.parent, 'postMessage');
component.navigateTo();
expect(postMessageSpy).toHaveBeenCalled();
});
【问题讨论】:
-
您是否尝试过注入窗口以便您可以监视它? stackoverflow.com/a/52620181/973651(答案中有几个选项)
-
当您在方法 (
navigateTo) 上应用spyOn而不调用.and.callThrough()时,该方法将成为存根,这意味着在您的示例中未调用其实际内容。除此之外,您根本不需要监视navigateTo,您需要按原样调用它(毕竟,这是您要测试的方法)。
标签: angular typescript unit-testing jasmine karma-jasmine