我正在尝试测试以下控制器:
@GetMapping("movies")
public Page<Title> getAllMovies(@PageableDefault(value=2) Pageable pageable){
return this.titleService.getTitleByType("Movie", pageable);
}
下面是测试类:
@RunWith(SpringRunner.class)
@WebMvcTest(TitleController.class)
@EnableSpringDataWebSupport
public class TitleControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private TitleService titleService;
// Test controller method - getAllMovies
@Test
public void getAllMovies() throws Exception {
Title title = new Title();
title.setId((short)1);
title.setName("The Godfather");
title.setType("Movie");
List<Title> titles = new ArrayList<>();
titles.add(title);
Page<Title> page = new PageImpl<>(titles);
given(this.titleService.getTitleByType("Movie", PageRequest.of(0,2))).willReturn(page);
mockMvc.perform(MockMvcRequestBuilders.get("/movies"))
.andExpect(status().isOk());
}
}
当我运行测试失败,并给我以下消息:
java.lang.AssertionError: Status
Expected :200
Actual :500
当我测试的urlhttp://localhost:8080/movies
正常工作。
我认为你没有正确地模拟/初始化你的标题服务
,这就是你得到500
响应代码的原因。
您可以通过模拟TitleService并将其传递给测试的控制器来修复它:
@RunWith(SpringJUnit4ClassRunner.class)
public class TitleControllerTest {
private MockMvc mockMvc;
private TitleController underTest;
@Mock
private TitleService titleService;
@Before
public void init() {
underTest = new TitleController(titleService);
//DO THE MOCKING ON TITLE SERVICE
// when(titleService.getTitleByType()) etc.
mockMvc = MockMvcBuilders
.standaloneSetup(underTest)
.build();
}
//your tests
}
或:
@RunWith(SpringRunner.class)
@WebMvcTest(TitleController.class)
@EnableSpringDataWebSupport
public class TitleControllerTest {
@Autowired
private MockMvc mockMvc;
@Autowired
private TitleController titleController;
@MockBean
private TitleService titleService;
@Before
public void init() {
titleController.setTitleService(titleService);
//DO THE MOCKING ON TITLE SERVICE
// when(titleService.getTitleByType()) etc.
}
//your tests
}
我正在测试家庭控制器 我使用spring security作为用户名“user”,默认情况下作为密码进行测试,但@PreAuthorize不起作用 的结果 预期结果: 实际结果: 我错过了什么吗?
我试图使用mockmvcbuilders.standalonesetup方法为一个spring mvc rest控制器创建一个非常基本的单元测试。我一直收到一个404错误。下面列出了测试应用程序上下文、测试类、控制器和整个堆栈跟踪。欢迎任何指导。 java.lang.AssertionError:状态应为:<200>但实际为:<404>在org.springframework.test.util.
我有低于pom的。SpringBoot应用程序中的xml。在运行应用程序时,我没有遇到任何错误。但当我通过邮递员或浏览器点击URL时,控制器中的java代码不会被执行。 波姆。xml: 控制器: 项目执行截图: Spring Boot应用程序类: Spring启动存储库类: 将BasePackage添加为com后。下面是一个例外情况: 2022-03-21 09:51:35.169WARN 205
我已经为此挣扎了一段时间了。我想使用restAs0007来测试我的SpringBoot REST应用程序。 虽然看起来容器旋转得很好,但请放心(其他任何东西似乎都有问题。 一直以来我都被拒绝连接。 我的测试类: 现在,对于奇怪的部分,传递并打印它应该传递的内容,但是正在获得连接拒绝异常。 知道这个装置有什么问题吗?
嗨,我用spring初始化器创建了一个简单的Spring Boot应用程序。我在主应用程序类的同一文件夹中添加了一个控制器。 这是给我以下错误的网址http://localhost:8080/welcome 此应用程序没有针对/错误的显式映射,因此您将其视为回退。 Sat Dec 19 12:51:44 IST 2020出现意外错误(类型=未找到,状态=404)。 如果我使用@restContro
easySwoole支持REST风格开发。在实现上,其实是对AbstractController进行了REST规则封装,本质上,也是一个控制器。 支持GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS。 实例代码 namespace AppControllerRest; use CoreAbstractInterfaceAbstractREST; use CoreHttp