【发布时间】:2021-07-13 19:01:51
【问题描述】:
.ts 文件:
ngOnInit(): void {
if (
this.activatedRoute.snapshot.queryParamMap.has('esign') &&
this.activatedRoute.snapshot.queryParamMap.has('registration')
) {
this.eSignAndRegistration = true;
}
.spec.ts 文件:
let esign_registration = false;
const mockActivatedRoute = {
snapshot: {
queryParamMap: {
has: (response) => {
if (response == 'esign' && response == 'registration') {
return esign_registration;
}
测试:
fit("should show the 1st mat-card if the param is 'esign®istration'", () => {
esign_registration = true;
fixture.detectChanges();
component.ngOnInit();
fixture.detectChanges();
const compiled = fixture.nativeElement;
expect(component.eSignAndRegistration).toBeTruthy();
});
错误不断出现“预期未定义为真实”。 'has' if 语句需要如何编写才能使单元测试正常工作?我试过了
if (response == 'esign' && 'registration')
和
if (response == 'esign®istration')
以及其他各种方法,但它们都一直给出相同的错误。
【问题讨论】:
-
没有真正回答你的问题,但你应该使用工具来简化路由参数的模拟,而不是自己创建一个完整的模拟。观众图书馆可以提供帮助。我相信最近版本的 Angulzr 甚至内置了一些东西。
标签: angular unit-testing if-statement query-parameters