1

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

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

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

application.property我在src/main目录中的文件。谁能告诉我如何在测试类中访问该 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());

    }

测试账户控制器

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

            }

            }
4

1 回答 1

2

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

@Value("${InstituteIdentifier}")
private String instituteIdentifier;
于 2018-07-17T13:30:41.843 回答