如何将 application.property 变量值访问到测试 class

How to access application.property variable value into test class

我正在使用 spring data jpa 创建微服务。我正在尝试为控制器编写测试用例。现在在控制器 url 中,我正在访问 application.property 文件中的 InstituteIdentifier 变量值。在 AccountController class 中,我在 url

中获取 InstituteIdentifier 变量值

但我无法在测试 class url 中访问 InstituteIdentifier 变量值。我尝试在测试用例 url 中使用 $ InstituteIdentifier 但值未注入,我收到 404 测试用例失败错误。

如果我硬编码 InstituteIdentifier 值,而不是访问 url 中的变量,那么测试用例 运行 没有任何错误。但我不想硬编码。

application.property 文件我在 src/main 目录中。谁能告诉我如何在测试 class 中访问 application.property 文件变量?或者我还需要为测试创建单独的 属性 文件。

账户控制器

@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);

            }

            }

您必须使用值注释注入 属性,然后使用它来构建 URL。

@Value("${InstituteIdentifier}")
private String instituteIdentifier;