angular首页问题
查问参数不起作用,这个问题是学长解决的,但感觉有必要记录一下
查问时机器人治理连贯状态不起作用
在mockApi中打印承受到的参数,查看控制台,发现传过来的连贯状态参数为空
查问时的过程
点击查问后执行onSubmit()办法
onSubmit(queryForm: FormGroup): void { this.reload({...this.params, ...queryForm.value}); }
onSubmit()执行reload()办法
/** * 查问 * @param params page: 当前页 size: 每页大小 */ reload(params: Params): void { // 将参数转换为路由参数 const queryParams = CommonService.convertToRouteParams(params); console.log('queryParams',queryParams); this.router.navigate(['./'], { relativeTo: this.route, queryParams: queryParams, }).then(); }
/** * 将参数转换为路由参数 * @param params 参数 * @return 实用于route的Params */ public static convertToRouteParams(params: { [header: string]: string | string[] | number | number[] | null | undefined; }) : { [header: string]: string | string[]; } { const queryParams = {} as { [header: string]: string | string[]; }; // 过滤掉undefined及null的数据 for (const key in params) { if (params[key] !== undefined) { const value = params[key]; if (value !== undefined || value !== null) { if (typeof value === 'string') { if (value.length > 0) { queryParams[key] = value; } } else if (typeof value === 'number') { queryParams[key] = value.toString(); } else if (Array.isArray(value)) { queryParams[key] = []; (value as []).forEach(v => { if (typeof v === 'number') { (queryParams[key] as string[]).push((v as number).toString()); } else { (queryParams[key] as string[]).push(v); } }); } } } } return queryParams; }
在这个办法中并没有对boolean值得解决,所以传过来的boolean值间接被过滤掉了,而我在抉择组件中恰好将类型申明为了boolean,这就导致了这样的问题。
批改后解决
另一个问题,在另一个首页的组件中因为没有加上面的代码导致刷新或切换页面后查问参数隐没。
这个比拟奇怪,就是加了这几行代码在单元测试是如果刷新或者查问的话查问参数会间接隐没。
然而如果不加的话在单元测试就不会有这个问题
所以过后一时冲动就给删了
然而起初认真想一下忽然就明确了,如果我加上依据路由参数初始化formControl的代码,我在每次单元测试时传的参数都是空的,所以点击查问时天然不会保留数据,但我仍然不太明确为什么我不加那一串代码的话点击查问后查问参数会被保留,猜想是因为angular并没有检测到这几个值得变动,所以在点击查问后 没有从新加载查问的表单。
简略捋一下首页的流程
学习springBoot一些问题
在写单元测试遗记加注解导致问题
因为引入的包谬误导致的问题
单元测试一些不太好了解的代码
学习springboot后发现springboot的单元测试比angular的更为简单,汪汪测试的代码比理论实现性能的代码更多,springboot的单元测试也更为简单。
@Test public void save() throws Exception { String url = "/Klass"; // 申请路由 MockHttpServletRequestBuilder // 结构post申请postRequest = MockMvcRequestBuilders.post(url) .contentType("application/json;charset=UTF-8") // 数据格式 .content("{\"name\":\"测试单元测试班级\"}") ; // 申请内容// 发动post申请 this.mockMvc.perform(postRequest) .andDo(MockMvcResultHandlers.print()) // 打印后果 .andExpect(MockMvcResultMatchers.status().is(201));// 断言 }
当对studentService发动申请且申请的类型为Student时返回returnStudent
Mockito.when( studentService.save( Mockito.any(Student.class))) .thenReturn(returnStudent);
logger.info("新建参数捕捉器");// 初始化一个能够捕捉Student类型变量的捕捉器ArgumentCaptor<Student> studentArgumentCaptor = ArgumentCaptor.forClass(Student.class); // 当调用studentService.save办法时,应用studentArgumentCaptor.capture()来捕捉参数的值Mockito.verify(studentService).save(studentArgumentCaptor.capture()); // 获取参数捕捉器的值Student passedStudent = studentArgumentCaptor.getValue();