问题描述
我有一个简单的异步验证器函数,在给定字符串列表的情况下,它会检查字符串是否作为代码存在于给定的 icdService 中(代码被简化以获取字符串列表 - 在现实和测试中,函数获取对象列表 - 但它们可以简单地映射以获取字符串列表)
export const faultyICDCodesInSynonymListValidator = (
icds: string[],icdSearchService: IcdSearchService,): Observable<ValidationErrors | null> => {
const icd10ObsList = icds.map((icdSyn: string) => icdSearchService.findIcd10ForCode(icdSyn));
return zip(...icd10ObsList).pipe(
map(res => {
const faultyICDs = [];
res.map((e,i) => {
if (!e) {
faultyICDs.push(icds[i]);
}
});
return faultyICDs.length ? { faultyICDs } : null;
}),);
};
这工作正常,并且表单已正确验证。然而,当我想使用茉莉花弹珠为此编写测试时,麻烦就来了。我有 2 个测试 - 一次当代码存在时,一次当它不存在时。我已经尝试了各种热/冷、时间、完成的随机组合......但由于我不知道发生了什么,我总是得到失败的结果,因为我不知道发生了什么......这里是测试:>
fdescribe('faultyICDCodesInSynonymListValidator',() => {
let icdSearchService: IcdSearchService;
beforeEach(() => {
Testbed.configureTestingModule({
providers: [provideMockStore({ initialState: {} })],});
icdSearchService = Testbed.inject(IcdSearchService);
});
it('should return array with invalid icd codes',() => {
// given
spyOn(icdSearchService,'findIcd10ForCode').and.returnValue(of(undefined));
const expected = hot('a|',{
a: { faultyICDs: ['M45'] },});
// then
expect(faultyICDCodesInSynonymListValidator([basicICDSynonym],icdSearchService)).toBeObservable(expected);
});
fit('should return null as all icd codes are valid','findIcd10ForCode').and.returnValue(of(createIcd10({ code: 'M45' })));
// when
const source = hot('-a|',{
a: faultyICDCodesInSynonymListValidator([basicICDSynonym],icdSearchService),});
const expected = hot('-b|',{
b: null,});
// then
expect(source).toBeObservable(expected);
});
});
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)