【发布时间】:2018-08-11 23:35:12
【问题描述】:
在我们的 Angular 应用程序中,我们使用环境文件来加载一些配置。
环境.ts
export const environment = {
production: false,
defaultLocale: 'en_US',
};
然后我们在我们的一项服务中使用它:
import { environment } from '../../environments/environment';
import { TranslateService } from './translate.service';
@Injectable()
export class LocaleService {
constructor(private translateService: TranslateService){}
useDefaultLocaleAsLang(): void {
const defaultLocale = environment.defaultLocale;
this.translateService.setUsedLang(defaultLocale);
}
}
所以我在服务方法中使用环境文件中的值。
在我们的测试文件中,我们当然可以监视 translateService:
translateService = jasmine.createSpyObj('translateService', ['setUsedLang']);
但我不知道如何在我的测试文件中模拟环境值(例如在 beforeEach 中)。甚至出于测试目的将其转换为Subject,以便我可以更改它并测试不同的行为。
更一般地说,您如何在测试中模拟此类导入值以确保不使用真实值?
【问题讨论】:
-
将环境包装在一个加载它的接口中 (
EnvironmentLoader) 并模拟它? -
是的,我可以,但是如何测试 EnvironmentLoader 类和方法?问题已解决但未修复。