gpt4 book ai didi

javascript - 使用 Jasmine 测试数据设置是否正确

转载 作者:行者123 更新时间:2023-12-02 22:46:16 27 4
gpt4 key购买 nike

我有服务:

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 的测试中测试事件语言>。也许您还需要在 LanguageService#load 前面添加一个 await

await testee.load(lang);

关于javascript - 使用 Jasmine 测试数据设置是否正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58391411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com