Javascript 单元测试受保护方法或属性的最佳方式
我是单元测试新手,我有一个服务,它有一个抽象方法来设置基类配置。但我有点困惑,因为这些财产是受保护的。最好的测试方法是什么?我应该嘲笑它还是公开它Javascript 单元测试受保护方法或属性的最佳方式,javascript,angular,unit-testing,karma-jasmine,Javascript,Angular,Unit Testing,Karma Jasmine,我是单元测试新手,我有一个服务,它有一个抽象方法来设置基类配置。但我有点困惑,因为这些财产是受保护的。最好的测试方法是什么?我应该嘲笑它还是公开它 import { NavigationEnd } from '@angular/router'; import { Inject } from '@angular/core'; interface IConfig { path: string; pageTitle: string; fields: { [key: string]: st
import { NavigationEnd } from '@angular/router';
import { Inject } from '@angular/core';
interface IConfig {
path: string;
pageTitle: string;
fields: { [key: string]: string };
}
const CONFIGS: IConfig[] = [
{
path: '/create-account',
pageTitle: 'CreateAccount',
fields: {
name: 'name',
pin: 'pin',
mobilePhoneNumber: 'mobilePhoneNumber',
mediasource: 'mediasource',
},
},
{
path: '/application-form/user-data',
pageTitle: 'UserData',
fields: {
birthProvinceId: 'birthProvinceId',
birthCityId: 'birthCityId',
birthDate: 'birthDate',
birthMonth: 'birthMonth',
birthYear: 'birthYear',
gender: 'gender',
},
},
];
abstract class A {
protected selectedConfig: IConfig;
constructor(
@Inject(CONFIGS)
protected configs: IConfig[],
) {}
protected abstract setConfig(event): void;
}
@Injectable()
class B extends A {
setConfig(event: NavigationEnd) {
this.selectedConfig = this.configs.find(
(route: IConfig) => route.path === event.url,
);
}
}