【发布时间】:2020-10-09 11:29:01
【问题描述】:
我的问题类似于this question。我正在尝试编写一个测试来检查 Angular 中是否存在路由。与链接问题的主要区别在于,我使用的是延迟加载模块而不是组件。
我有一个包含路由的文件 app.routes.ts:
import { Routes } from '@angular/router';
export const routes: Routes = [
{
path: '',
loadChildren: () => import('./main/main.module').then(m => m.MainModule)
}
];
在测试文件app.routes.spec.ts中,我希望这个路由存在:
import { routes } from './app.routes';
describe('app.routes', () => {
it('should contain a route for /', () => {
expect(routes).toContain({
path: '',
loadChildren: () => import('./main/main.module').then(m => m.MainModule)
});
});
});
当我运行它时,测试没有通过。
预期 [ Object({ path: '', loadChildren: Function }) ] 包含 对象({路径:'',loadChildren:函数})。错误:预期 [ Object({ path: '', loadChildren: Function }) ] 包含 Object({ 路径:'',loadChildren:函数})。 在 在用户上下文。 (http://localhost:9876/_karma_webpack_/src/app/app.routes.spec.ts:5:24) 在 ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-evergreen.js:365:1) 在 ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/node_modules/zone.js/dist/zone-testing.js:305:1)
如何修复这个单元测试,并确保可以测试延迟加载路由的存在?谢谢!
免责声明:我知道有些人不认为这应该是单元测试的一部分,并且应该在 e2e 测试中测试路由。就我个人而言,我喜欢检查我的所有路线是否存在并且没有拼写错误的想法。如果有人出于某种原因注释掉一条路线并忘记撤消它,而自动化测试会捕捉到这一点,这让我感觉更安全。
【问题讨论】:
-
你检查下面的解决方案了吗?
标签: angular unit-testing