我有使用LocaleService
该服务的类和静态方法的组件instant()
。LocaleService
在未注入组件中。在测试组件时,我对LocaleService
内部不感兴趣,也不想测试它。因此,beforeEach
我添加了一个间谍
const localeServiceInstantSpy = spyOn(LocaleService, 'instant');
localeServiceInstantSpy.and.callFake(msg => msg);
这工作得很好。现在我需要将这个间谍(和其他)移动到一个存根,LocaleService
并在这个测试和其他组件的测试中使用它LocaleService
- 其中有很多。实现这一目标的最正确方法是什么?如何创建可重用的 LocaleServiceStub?
\app\utils\locale.service.ts
export class LocaleService {
public static lang: string;
private static messages = {
'user.add': {
en: 'Add Local User Account',
de: 'Add Local User Account DE'
},
'user.edit': {
en: 'Edit Local User Account',
de: 'Edit Local User Account DE'
}
};
public static instant(key: string) {
return this.messages[key][this.lang];
}
}
在被测类中的使用\app\settings\users\user-form.component.ts
import { LocaleService } from 'app/utils/locale.service';
...
getDialogHeader() {
return this.isNewUser ? LocaleService.instant('user.add') : LocaleService.instant('user.edit');
}
...