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

时间:2018-07-12 12:11:55

标签: spring-data-jpa junit4 application.properties

我正在使用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);

            }

            }

1 个答案:

答案 0 :(得分:2)

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

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