gpt4 book ai didi

junit - 当方法在 junit 中返回 null 时的 mockito

转载 作者:行者123 更新时间:2023-12-01 09:04:50 24 4
gpt4 key购买 nike

我一直在使用 mockito 编写测试用例。下面是我在测试用例中的代码。

@RunWith(SpringRunner.class)
public class LoginControllerTest {

private MockMvc mockMvc;

@InjectMocks
private LoginService loginService;

@Mock
private LoginController loginController;

@Before
public void setup() {
MockitoAnnotations.initMocks(this);
// Setup Spring test in standalone mode
mockMvc = MockMvcBuilders.standaloneSetup(loginController).build();

}

@Test
public final void test() throws Exception {

// Assign
when(loginService.test()).thenReturn("hello");

// act
mockMvc.perform(get("/hello"))
// Assertion
.andExpect(status().isOk())
.andExpect(content().string("Message from service: hello"));
verify(loginService).test();
}

@Test
public final void usernameInvalidAndPassword() throws Exception {

User userData = new User();
userData.setUserName("akhila.s@cloudium.io");
userData.setPassword("Passw0rd");


User userDataNew = new User();
userDataNew.setUserName("akhila.s@cloudium.io");
userDataNew.setPassword("Passw0rd");


JSONObject requestBody = new JSONObject();

requestBody.put("userName", "akhila.s@cloudium.io");
requestBody.put("password", "Passw0rd");

JSONObject responseBody = new JSONObject();

responseBody.put("status_code", "200");
responseBody.put("message", "ok");

// Assign
when(loginService.saveUser(userData)).thenReturn(userDataNew);

// act
mockMvc.perform(get("/login")
.param("userName", "akhila.s@cloudium.io")
.param("password", "Passw0rd"))
// Assertion
.andExpect(status().isOk()).andExpect(content().json(responseBody.toString())).andDo(print());
}

对于第一个测试用例,它工作正常,但对于第二个测试,它总是返回 null。有人可以帮忙吗?提前致谢

最佳答案

您在 LoginController 和 LoginService 上的注解方式有误。您正在测试 Controller ,所以您不想模拟它,并且您在服务上 stub 方法,所以这需要是一个模拟:

 @Mock  
private LoginService loginService;

@InjectMocks
private LoginController loginController;

关于junit - 当方法在 junit 中返回 null 时的 mockito,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47713555/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com