У меня был следующий тест
it('should send message to window...', inject(
[AppEventsService],
(service: AppEventsService) => {
spyOn(window.parent, 'postMessage').and.callThrough();
service.sendMessage('MyTestEvent', 'empty');
expect(window.parent.postMessage).toHaveBeenCalledWith(
JSON.stringify({ e: 'MyTestEvent', v: 'empty' }),
'*'
);
}
));
это работает в Chrome, но в IE я получил
Error: <toHaveBeenCalledWith> : Expected a spy, but got Function.
Usage: expect(<spyObj>).toHaveBeenCalledWith(...arguments)
а почему? Метод в обслуживании делает следующее
public sendMessage(event: string, param: string) {
const message = {};
message['e'] = event;
if (StringUtils.isNullOrWhiteSpace(param)) {
message['v'] = '';
} else {
message['v'] = param;
}
window.parent.postMessage(JSON.stringify(message), '*');
}