如何在 angular jasmine 规范中模拟路由器
How to mock router in angular jasmine spec
我不熟悉使用 jasmine 编写测试规范。我在 ngOnInit() 中有一个条件,例如 router.url.includes(some string)。检查组件是否真实的默认规范测试用例失败,提示 TypeError: Cannot find includes of undefined。有什么方法可以监视或模拟包含吗?
您可以使用 RouterTestingModule
模拟 angular 路由器。
只需导入 angular 路由器,如下所示。
import { RouterTestingModule } from '@angular/router/testing';
import { ActivatedRoute, Router } from '@angular/router';
并将其添加到NgModule
的imports
数组中
TestBed.configureTestingModule({
declarations: [
someComponent
],
imports: [
RouterTestingModule.withRoutes([]),
],
providers: [someProvider],
}).compileComponents
然后就可以像下面这样注入Router,用来测试
it('should Navigate', () => {
const actiavtedRoute = TestBed.inject(ActivatedRoute);
const router = TestBed.inject(Router);
})
我不熟悉使用 jasmine 编写测试规范。我在 ngOnInit() 中有一个条件,例如 router.url.includes(some string)。检查组件是否真实的默认规范测试用例失败,提示 TypeError: Cannot find includes of undefined。有什么方法可以监视或模拟包含吗?
您可以使用 RouterTestingModule
模拟 angular 路由器。
只需导入 angular 路由器,如下所示。
import { RouterTestingModule } from '@angular/router/testing';
import { ActivatedRoute, Router } from '@angular/router';
并将其添加到NgModule
imports
数组中
TestBed.configureTestingModule({
declarations: [
someComponent
],
imports: [
RouterTestingModule.withRoutes([]),
],
providers: [someProvider],
}).compileComponents
然后就可以像下面这样注入Router,用来测试
it('should Navigate', () => {
const actiavtedRoute = TestBed.inject(ActivatedRoute);
const router = TestBed.inject(Router);
})