假设我有一个带for
语句的简单函数:
public addIcons(icons): void {
for (let icon of icons) {
this.iconRegistry.addSvgIcon(icon['name'], icon['path']);
}
}
如果我试图监视iconRegistry.addSvgIcon
,则测试失败。如果我修改应用以在addSvgIcon
循环之外调用for
,则会传递。
it('should add icons to the registry', inject([IconService, MdIconRegistry], (
service: IconService,
iconRegistry: MdIconRegistry) => {
spyOn(iconRegistry, 'addSvgIcon');
service.addIcons({ 'name': 'blah', 'path': 'blech' });
expect(iconRegistry.addSvgIcon).toHaveBeenCalled();
}));
控制台日志表明正在调用addIcons
函数,但未输入for
语句。为什么不呢?
答案 0 :(得分:1)
我不是使用Typescript的专家,但是您将一个对象作为参数传递给addIcons
,它需要一个数组。
更改此行:
service.addIcons({ 'name': 'blah', 'path': 'blech' });
到此:
service.addIcons([{ 'name': 'blah', 'path': 'blech' }]);