【发布时间】:2021-10-08 09:08:36
【问题描述】:
我需要将单元测试写入 Angular 路由器解析器。 写了个创建单元测试,但是不知道怎么测试返回值,卡在里面了。
用于获取组件信息的解析器
@Injectable
export class InfoResolver implements Resolve<any> {
constructor(private readonly http: HttpClient, private readonly store: Store<IAppState>) {}
resolve(route: ActivatedRouteSnapshot): any {
const a$ = this.store.pipe(select(a));
const b$ = this.store.pipe(select(b));
return combineLatest([a$, b$]).pipe(
take(1),
map(([a, b]) => {
return a && !(b && route.paramMap.get(id) === 2)
? this.http.get('/url')
: of(false)
})
)
}
}
用于创建解析器的单元测试
const state = {
a: true,
b: false
}
describe('InfoResolver', () => {
let resolver: InfoResolver
let route = {
paramMap: {
get: (id) => 1
}
}
beforeEach(async() => {
TestBed.configureTestingModule({
providers: [InfoResolver, provideMockStore({ state })]
})
resolver = TestBed.inject(InfoResolver)
})
it('should create', () => {
expect(resolver).toBeTruthy()
})
})
如何测试resolve方法的返回值?
【问题讨论】:
标签: angular unit-testing jasmine karma-jasmine karma-runner