前后台分别开发完毕后,本节进行集成测试以保障新增课程功能的正确性。 # 清缓存 测试前先清除session缓存以免发生CORS错误。 ![](https://img.kancloud.cn/50/9d/509db51e1ed2fea9531cab814e49737f_1194x406.png) # 添加路由 添加子路由: course/course-routing.module.ts ```typescript import {AddComponent} from './add/add.component'; const routes: Routes = [ { path: 'add', component: AddComponent } ]; ``` 添加根路由: app-routing.module.ts ```typescript const routes: Routes = [ ... { path: 'course', loadChildren: () => import('./course/course.module').then(mod => mod.CourseModule) } ]; ``` # 初始化登录用户 ![](https://img.kancloud.cn/17/9d/179d9e0463f98e475d6d87ee37d0552f_676x52.png) # 集成测试 使用初始化用户登录系统后在浏览器输入`http://localhost:4200/course/add` ![](https://img.kancloud.cn/0e/de/0ede8a96121327cf640a0fb12e06fdd8_796x324.png) ## 引入模块: ```typescript @NgModule({ declarations: [AddComponent, KlassMultipleSelectComponent], imports: [ CommonModule, CourseRoutingModule, ReactiveFormsModule, ➊ KlassModule, ➋ CoreModule ➌ ] }) export class CourseModule { } ``` * ➊ formGroup所在模块 * ➋ 选择教师组件TeacherSelectComponent所在模块 * ➌ KlassMultipleSelect依赖的多选组件MultipleSelect所在模块 ## 暴露(输出)组件 组件默认被声明到模块的declarations中,表明该组件为本模块的私有组件。若组件需要共享给其它模块,则需要将其声明到exports中。 core/core.module.ts ```typescript exports: [ SelectComponent, MultipleSelectComponent ✚ ] }) export class CoreModule { } ``` klass/klass.module.ts ```typescript ], exports: [ TeacherSelectComponent ✚ ] }) ``` ![](https://img.kancloud.cn/e2/87/e287d09d16149270e761c609b31548cc_681x480.png) # 添加测试数据 添加几个教师以及几个班级后再次测试. ![](https://img.kancloud.cn/07/8d/078d71da02572c28f6516f5c9026c059_445x345.png) 控制台发生了500错误: ![](https://img.kancloud.cn/07/11/07113adfa27426f61438543e31d445d1_1390x253.png) 查看网络信息获取发起请求的内容: ![](https://img.kancloud.cn/b9/69/b969eb530090e357eb7ed7f9170fcd61_930x274.png) ## 修正BUG 发现是由于在提交时没有传入course的名称导致的。排查对应的单元测试及组件代码发现在onSubmit方法中的确没有在提交信息时加入课程名称,修正如下: course/add/add.component.ts ```typescript onSubmit() { this.course.name = this.formGroup.get('name').value; ✚ this.courseService.save(this.course).subscribe((course) => { console.log(course); }); } ``` 同步补充单元测试文件: course/add/add.component.spec.ts ```typescript fit('onSubmit', () => { component.formGroup.get('name').setValue('test'); ... expect(course.name).toEqual('test'); }); ``` # 测试结果 ![](.8_images/83.png) # 参考文档 | 名称 | 链接 | 预计学习时长(分) | | --- | --- | --- | | 源码地址 | [https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step6.1.8](https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step6.1.8) | - |