在测试中初始化变量(MockMVC)

时间:2015-07-15 11:57:32

标签: java spring mocking

我正在尝试使用MockMVC(Spring框架)运行2个测试。

  • 第一个添加用户。添加用户后,将生成userID并返回。
  • 第二个应该从此userID删除添加的用户。

在我的测试课程开始时,我有这个变量:String userID;

这是我创建用户的测试(它可以工作)。创建用户后,我从响应中获得该用户生成的ID。

@Test
public void it_adds_a_new_user() throws Exception {
    MvcResult result = mockMvc
        .perform(post("/users")
            .contentType(MediaType.APPLICATION_JSON)
            .content("User infos, in JSON..."))
        .andExpect(status().isOk())
        .andReturn();
    //Next lines just take the ID from the response
    Matcher matcher = Pattern.compile("\\d+").matcher(result.getResponse().getContentAsString());
    matcher.find();

    this.userID = matcher.group();       
    System.out.println(userID); //Correctly print the generated ID
}

现在,我试图删除这个可怜的家伙:

@Test
public void it_deletes_the_new_user() throws Exception {
    System.out.println(userID); //It prints null!
    mockMvc.perform(delete("/users/" + userID)
        .contentType(MediaType.APPLICATION_JSON)
    .andExpect(status().isOk()); //400 because userID is null :-(
}

问题是userID在第一次测试中被正确初始化,但在第二次测试中是null(它是一个类变量)。我不明白为什么。

你能帮助我运行这些测试吗?如果可能的话,在第二次测试中解释为什么userID == null

谢谢!

0 个答案:

没有答案