我正在使用spring data jpa创建微服务。我正在尝试为控制器编写测试用例。现在,在控制器URL中,我正在访问InstituteIdentifier
文件中的application.property
变量值。在AccountController类中,我在URL中获取InstituteIdentifier变量值
但是我无法在测试类URL中访问该InstituteIdentifier
变量值。我尝试在测试用例url中使用$ InstituteIdentifier
,但没有注入值,并且收到404测试用例失败错误。
如果我要对InstituteIdentifier值进行硬编码,则可以在没有任何错误的情况下运行测试用例,而不是访问url中的变量。但是我不想硬编码。
我在application.property
目录中有 src/main
个文件。谁能告诉我如何在测试类中访问该application.property文件变量?或者我也需要创建单独的属性文件进行测试。
AccountController
@RestController
@CrossOrigin(origins = "${crossOrigin}")
@RequestMapping("/spacestudy/${InstituteIdentifier}/admin/account")
public class AccountController {
@Autowired
AccountService accService;
@GetMapping("/loadAcctLocationList")
public ResponseEntity<List<Account>> findLocation() throws Exception{
return ResponseEntity.ok(accService.findLocation());
}
TestAccountController
@RunWith(SpringRunner.class)
@WebMvcTest(value=AccountController.class)
public class TestAccountController {
@Autowired
private MockMvc mockMvc;
@MockBean
private AccountService accountService;
@Test
public void findLocationTest() throws Exception {
Account account = new Account();
account.setsLocation("Test1");
List<Account> accountObj = new ArrayList<Account>();
accountObj.add(account);
Mockito.when(accountService.findLocation()).thenReturn(accountObj);
mockMvc.perform(get("/spacestudy/$ InstituteIdentifier/admin/account/loadAcctLocationList"))
.andExpect(status().isOk())
.andExpect(jsonPath("$[0].sLocation", is("Test1")))
.andExpect(jsonPath("$.*",Matchers.hasSize(1)));
for(Account result: accountObj) {
assertEquals("Test1", result.sLocation);
}
}
答案 0 :(得分:2)
您必须使用Value注释注入属性,然后使用它来构建URL。
@Value("${InstituteIdentifier}")
private String instituteIdentifier;