[узел: v10.15.3, пряжа: 1.22.4, @ angular / core: ^ 8.2.14]
Я пишу юнит-тест для компонента, который по сути выводит один из четырех вариантов :
<ng-container [ngSwitch]="code">
<ng-template [ngSwitchCase]="'nocontainer'">
<h1>Container Error</h1>
<p>There has been an error connecting to your container. Please emulate a headless chicken.</a></p>
</ng-template>
<ng-template [ngSwitchCase]="'418'">
<h1>I'm a teapot</h1>
<p><img src="https://images-eu.ssl-images-amazon.com/images/I/41bbDR3wffL._SL500_AC_SS350_.jpg" alt="multi-coloured teapot" /></p>
</ng-template>
<ng-template [ngSwitchCase]="'401'">
<h1>Not Authorized</h1>
<p>Authorization is needed to access this resource. Please log in.</p>
</ng-template >
<ng-template [ngSwitchCase]="'403'">
<h1>Access Forbidden</h1>
<p>You are not permitted to access this resource</p>
</ng-template >
<ng-template ngSwitchDefault> <!-- 404 -->
<h1>Page not found</h1>
<p>The page you have requested cannot be found. Please check the URL and try again.</p>
</ng-template>
</ng-container>
и управляющая машинопись читает:
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
@Component({
templateUrl: './error.component.html',
styleUrls: ['./error.component.scss'],
})
export class ErrorComponent implements OnInit {
code = '404';
constructor(private route: ActivatedRoute) { }
ngOnInit() {
this.route.params.subscribe(params => {
if (params.code) { // code is always a thing (an http error code or a string)
this.code = params.code;
}
});
}
}
Очевидное решение для тестирования это ActivatedRouteStub
, как объяснено в angular документах и продемонстрировано в Angular тестировании Stackbiz .
Проблема, которую я получаю, заключается в том, что я получаю ошибку от этого ActivatedRouteStub
класса:
ERROR in src/app/testing/testing-utils.ts(18,43): error TS2345: Argument of type 'Params | undefined' is not assignable to parameter of type 'Params'.
Type 'undefined' is not assignable to type 'Params'.
Когда я пытаюсь для запуска тестов.
Кто-нибудь получил предложение, в чем проблема и как ее решить?