Как использовать шпионов Jasmine на сервисе со статической переменной? - PullRequest
0 голосов
/ 02 мая 2019

В моем приложении ANGULAR 2 есть сервис; который содержит свойство статической ссылки.

export class AppConfigService {
    static settings: IAppConfig;
    constructor(private http: HttpClient) {}

    load() {
        const jsonFile = `assets/config/config.${environment.name}.json`;
        return new Promise<void>((resolve, reject) => {
            this.http.get(jsonFile).toPromise().then((response: IAppConfig) => {
                AppConfigService.settings = response as IAppConfig;
                resolve();
            }).catch((response: any) => {
                reject(`Could not load file '${jsonFile}': ${JSON.stringify(response)}`);
            });
        });
    }
}

А вот пример реализации метода, который я собираюсь проверить в моем файле ts.

export class SlideImageComponent implements OnInit {
    ......
    readonly baseUrl = AppConfigService.settings.serverApiUrl;
    ......

Как можно смоделировать данные в статической переменной для тестовых случаев? Всякий раз, когда я пытаюсь смоделировать данные в формате useClass / useValue, я получаю неопределенное значение для AppConfigService.settings.serverApiUrl.

1 Ответ

0 голосов
/ 02 мая 2019

Статические переменные машинописного текста не существуют в JS.

Вместо этого они связаны с конструктором класса.

Попробуйте использовать это:

AppConfigService.constructor.settings.serverApiUrl
...