如何在测试用例 HTTP 方法中访问变量值 URL
How to access variable value in test case HTTP method URL
我正在尝试为控制器 classes 在 spring 引导 jpa 应用程序中编写 Junit 测试用例。在控制器中 class
InstituteIdentifier
url 中的变量 我正在从 application.property
文件中这样访问 ${InstituteIdentifier}
。在这里,我在 url
中获得该值
在测试用例中,我也在使用 @value
注释从 application.property 访问 InstituteIdentifier
变量。我能够在控制台中打印该值。但是当我在测试用例 GET 方法 url 中访问该变量时,我收到此错误 java.lang.IllegalArgumentException: Not enough variable values available to expand 'InstituteIdentifier
当我搜索这个错误时我发现这里${InstituteIdentifier}
我们不需要给{}
。当我删除 {}
变量值时 url.
谁能告诉我该怎么做?
application.property
InstituteIdentifier=vcufy2010
部门主管
@RestController
@CrossOrigin(origins ="${crossOrigin}")
@RequestMapping("/spacestudy/${InstituteIdentifier}/control/searchfilter")
public class DepartmentController {
@Autowired
DepartmentService depService;
@GetMapping("/loadDepartments")
public ResponseEntity<Set<Department>> findDepName() {
Set<Department> depname = depService.findDepName();
return ResponseEntity.ok(depname);
}
}
测试部门控制器
@RunWith(SpringRunner.class)
@WebMvcTest(value=DepartmentController.class)
public class TestDepartmentController {
@Autowired
private MockMvc mockMvc;
@MockBean
DepartmentService departmentService;
@Value("${InstituteIdentifier}")
private String InstituteIdentifier;
@Test
public void testfindDepName() throws Exception {
System.out.println(InstituteIdentifier);//vcufy2010
Department department = new Department();
department.setsDeptName("ABC");
Set<Department> departmentObj = new HashSet<Department>();
departmentObj.add(department);
Mockito.when(departmentService.findDepName()).thenReturn(departmentObj);
mockMvc.perform(get("/spacestudy/${InstituteIdentifier}/control/searchfilter/loadDepartments")
.accept(MediaType.APPLICATION_JSON))
When I search for this error I found that here ${InstituteIdentifier}
we don't need to give {}. when I am removing {} variable value is not
feaching in url.
要使用 String
变量的值,您不需要 {}
也不需要 $
。
事实上,你不需要评估任何东西。由于 Spring 的 @Value
,它已经完成了。
所以在你的测试中,这是正确的:
@Value("${InstituteIdentifier}")
private String instituteIdentifier;
因为您需要从加载的属性中检索值。
然后你只需要通过连接 String
s :
来传递提交的 url 中的 instituteIdentifier
变量的值
mockMvc.perform(get("/spacestudy/" + instituteIdentifier + "/control/searchfilter/loadDepartments")
.accept(MediaType.APPLICATION_JSON))
我正在尝试为控制器 classes 在 spring 引导 jpa 应用程序中编写 Junit 测试用例。在控制器中 class
InstituteIdentifier
url 中的变量 我正在从 application.property
文件中这样访问 ${InstituteIdentifier}
。在这里,我在 url
在测试用例中,我也在使用 @value
注释从 application.property 访问 InstituteIdentifier
变量。我能够在控制台中打印该值。但是当我在测试用例 GET 方法 url 中访问该变量时,我收到此错误 java.lang.IllegalArgumentException: Not enough variable values available to expand 'InstituteIdentifier
当我搜索这个错误时我发现这里${InstituteIdentifier}
我们不需要给{}
。当我删除 {}
变量值时 url.
谁能告诉我该怎么做?
application.property
InstituteIdentifier=vcufy2010
部门主管
@RestController
@CrossOrigin(origins ="${crossOrigin}")
@RequestMapping("/spacestudy/${InstituteIdentifier}/control/searchfilter")
public class DepartmentController {
@Autowired
DepartmentService depService;
@GetMapping("/loadDepartments")
public ResponseEntity<Set<Department>> findDepName() {
Set<Department> depname = depService.findDepName();
return ResponseEntity.ok(depname);
}
}
测试部门控制器
@RunWith(SpringRunner.class)
@WebMvcTest(value=DepartmentController.class)
public class TestDepartmentController {
@Autowired
private MockMvc mockMvc;
@MockBean
DepartmentService departmentService;
@Value("${InstituteIdentifier}")
private String InstituteIdentifier;
@Test
public void testfindDepName() throws Exception {
System.out.println(InstituteIdentifier);//vcufy2010
Department department = new Department();
department.setsDeptName("ABC");
Set<Department> departmentObj = new HashSet<Department>();
departmentObj.add(department);
Mockito.when(departmentService.findDepName()).thenReturn(departmentObj);
mockMvc.perform(get("/spacestudy/${InstituteIdentifier}/control/searchfilter/loadDepartments")
.accept(MediaType.APPLICATION_JSON))
When I search for this error I found that here ${InstituteIdentifier} we don't need to give {}. when I am removing {} variable value is not feaching in url.
要使用 String
变量的值,您不需要 {}
也不需要 $
。
事实上,你不需要评估任何东西。由于 Spring 的 @Value
,它已经完成了。
所以在你的测试中,这是正确的:
@Value("${InstituteIdentifier}")
private String instituteIdentifier;
因为您需要从加载的属性中检索值。
然后你只需要通过连接 String
s :
instituteIdentifier
变量的值
mockMvc.perform(get("/spacestudy/" + instituteIdentifier + "/control/searchfilter/loadDepartments")
.accept(MediaType.APPLICATION_JSON))