【发布时间】:2023-03-10 23:15:01
【问题描述】:
我是 Mockito 的新手,在 Spring Data Web 支持方面有点问题。
我的控制器中有以下功能。
@DeleteMapping("/")
public MyObject delete(@RequestParam("id")MyObject object){
...do something
}
这里发生的事情(在实际用例中)被描述为here。
问题是,当我在我的 unitTests 中使用 MockMvc 和 Mockito 时,没有数据库和持久存储库。如何让 Spring 使用 mockRepository 将/?id=1 中传递的 id 替换为我选择的 MyObject 实例。
这是测试的样子:
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.mine.OrgUnitController;
import com.mine.OrgUnitService;
@RunWith(SpringJUnit4ClassRunner.class)
public class OrgUnitControllerTest2 {
private MockMvc mockMvc;
@Mock
SomeService someService;
@InjectMocks
MyController controller;
@Before
public void init() {
MockitoAnnotations.initMocks(this);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void test_delete() throws Exception {
mockMvc.perform(delete("/?id=1")).andExpect(status().isOk());
}
}
非常感谢任何帮助。
【问题讨论】:
-
你使用 Spring Boot 吗?
-
你能添加一个你的单元测试的例子吗?
-
@alayor 当然,我这样做了。
-
@MaciejWalkowiak 是的,我愿意。
标签: spring spring-mvc spring-data mockito mockmvc