javascript - 使用 Jasmine 测试数据是否正确设置
问题描述
我有服务:
import { EventEmitter, Injectable } from '@angular/core';
@Injectable()
export class LanguageService {
protected activeLanguage = '';
constructor(protected translateService: TranslateService) {
}
async load(userLanguage: string) {
userLanguage = String(userLanguage).toLowerCase();
this.activeLanguage = userLanguage;
await this.translateService.use(this.activeLanguage).toPromise();
}
getActiveLanguage(): string[] {
return this.activeLanguage;
}
}
我想测试是否正确设置了活动语言。这就是我尝试这样做的方式:
import { TestBed, getTestBed } from '@angular/core/testing';
import { LanguageService } from './language.service';
fdescribe('LanguageService', () => {
let injector: TestBed;
let testee: LanguageService;
beforeEach(async () => {
TestBed.configureTestingModule({
//...
});
injector = getTestBed();
testee = injector.get(LanguageService);
});
it('should create', async () => {
expect(testee).toBeTruthy();
});
it('should load configuration', async () => {
const lang = 'en';
const languageServiceSpy = spyOn(testee, 'load').and.callThrough();
// make sure they haven't been called yet
expect(languageServiceSpy).not.toHaveBeenCalled();
testee.load(lang);
expect(languageServiceSpy).toHaveBeenCalledTimes(1);
});
it('should return active language', async () => {
const activeLanguage = testee.getActiveLanguage();
expect(activeLanguage).toEqual('en');
});
但是,我的测试失败并出现错误Error: Expected '' to equal 'en'.
如何保留第一次测试的结果?
我知道ComponentFixture
你可以在那里触发detectChanges
,但这是服务,而不是组件,所以使用它似乎不正确。无论如何,我还是前端测试的新手,所以我很想听听你会做什么。
或者我应该在同一个测试中获得主动语言?由于还有其他方法,我希望每个测试都针对而不是一个巨大的测试
解决方案
目前您LanguageService
的每次都在中创建beforeEach
,因此您应该在之前调用的测试中测试活动语言LanguageService#load
。可能你还需要一个await
在前面LanguageService#load
。
await testee.load(lang);
推荐阅读
- azure - 如何使用 Microsoft Graph 从 Azure Active Directory 获取配置文件图像?
- javascript - javascript递归函数内存泄漏
- sql - ORACLE SQL DEVELOPER 的 MERGE / UPDATE 查询
- r - 如何按出生年份对 data.frame 进行分类/存储
- ios - iOS:如何获取 twillio 语音和视频通话记录,如未接来电等
- javascript - 我正在尝试访问特定行,但在 Vue 中出现错误
- mongodb - 如何使用 Mongodb 比较两个日期(使用 NestJS 查找查询)
- r - 如何从 R 中的另一个字符串类型列中减去一个字符串类型列?
- azure-cosmosdb - 将数据从 Azure cosmos DB 备份到 Blob 存储
- python - 从python中的模块调用函数