当前位置: 首页 > 知识库问答 >
问题:

我想知道为什么使用这个WebMVCTest的Pageable对象的getBoardList测试不起作用

姚雅珺
2023-03-14

有一个源代码

@WebMvcTest(BoardController.class)
public class BoardControllerTest {
    
    private MockMvc mvc;

    @Autowired
    private ObjectMapper objectMapper;

    @Autowired
    BoardController boardController;

    @MockBean
    BoardServiceImpl boardService;

    @BeforeEach
    public void setUp() {
        mvc = MockMvcBuilders
                .standaloneSetup(boardController)
                .build();
    }

    @Test
    public void getBoardList() throws Exception {
        PageRequest pageable = PageRequest.of(0,10, Sort.Direction.DESC, "id");

        List<BoardDto> results = new ArrayList<>();
        results.add(new BoardDto(1, "Shown Title1", null, "Mingyeom", 2, LocalDateTime.now(), null));
        results.add(new BoardDto(2, "Shown Title2", null, "Mingyeom", 2, LocalDateTime.now(), null));
        results.add(new BoardDto(3, "Shown Title3", null, "Mingyeom", 2, LocalDateTime.now(), null));

        Page<BoardDto> expectedBoardDto = new PageImpl<>(results,pageable, results.size());

        given(boardService.getBoardList(anyInt(), any())).willReturn(expectedBoardDto);

        // when
        String responseBody = mvc.perform(get("/board/all")
                        .contentType(MediaType.APPLICATION_JSON)
                        .param("menuId", "2")
                        .param("page", "2")
                        .param("size", "1")
                        .param("sort", "ASC")
                        .param("properties", "id"))
                .andExpect(status().isOk())
                .andDo(print())
                .andReturn()
                .getResponse().getContentAsString();

        // then
        assertThat(responseBody).isEqualTo(objectMapper.writeValueAsString(expectedBoardDto));
    }
}

@RestController
@RequestMapping("/board")
@RequiredArgsConstructor
public class BoardController {
  
    private final BoardService boardService;

    @GetMapping("/all")
    public Page<BoardDto> getBoardList(
            Pageable pageable,
            @RequestParam Integer menuId
    ) {
        return boardService.getBoardList(menuId, pageable);
    }
}


基于下面的BoardController,我尝试测试接收pageable对象和接收menuId作为参数的方法,以检索文章的整个内容。

在BoardControlllerTest中创建PageRequest对象后,我创建了BoardDto列表,并使用PageImpl方法创建了Page对象。

(很抱歉没有帖子。)

如果您以相同的方式向web上的地址栏发送请求,它将正常发送,但如果您只是测试它,则会出现错误。下面是错误消息的内容。

请帮忙,,:(

共有1个答案

狄易安
2023-03-14

我解决了!


 @BeforeEach
    public void setUp() {
        mvc = MockMvcBuilders
                .standaloneSetup(boardController)
                .setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver())
                .setViewResolvers(new ViewResolver() {
                    @Override
                    public View resolveViewName(String viewName, Locale locale) throws Exception {
                        return new MappingJackson2JsonView();
                    }
                })
                .build();
    }

我在BoardControllerTest上写了这段代码,它编译成功了。

 类似资料:
  • 我有组织。postgresql。util。PSQLException:错误:关系“roles”不存在,我不知道为什么。 实体类 资源/META-INF/持久性。xml 在我有 那么为什么我有这样的错误,为什么会这样?我读过这个问题,它对我没有帮助。

  • 问题内容: 我正在尝试这样的事情 输出.py 输入.py 在cmd行 但它返回 EOFError 。有人可以告诉我我在做什么错吗? 谢谢你的帮助。 编辑 Patrick Harrington解决方案有效,但我不知道为什么… 更改为: 输出将是: 给我问候 问候是:你好 问题答案: 我在Windows机器上对此进行了测试,如果您指定Python exe,它将可以正常工作: 但是如果直接以以下方式运行

  • 问题内容: 我在这里有点困惑。如果我将变量传递给json_decode,它将不起作用: 第一个回显正确显示了我传递的JSON字符串,例如 第二个回显显示NULL。因此,我从第一个回显中获取了字符串,并编写了以下代码: 你怎么说,它向我展示了正确解码的数组。字符串绝对相同,我什至保留转义字符。也许是问题所在? 问题答案: 看起来您的服务器已启用。无论是将其禁用或运行通过使用它之前。

  • Stage.close()对我不起作用。 我查看了:JavaFX2.0:关闭一个舞台(窗口) 这是我的代码: 下面是调用消息框类的代码:

  • 问题内容: 嗨,我只是想创建一个简单的golang应用程序,它使用以下命令在identi.ca上发布新的凹痕 到目前为止,这是我的代码,恕我直言,这应该起作用,但实际上它不起作用,有人知道如何解决此问题吗? 编辑: 不:我没有收到任何错误消息:/ 问题答案: 不会将整个命令行作为单个参数。您需要将其称为: 您怎么知道是否遇到错误?您无需检查的返回值。 您实际上应该将命令创建与运行分开。这样,您可以

  • 在groovy中,我试图使用以下方法来模拟请求的返回,但每当代码调用时,我总是得到一个空指针异常: 测试中: 我使用的是Mockito3.12,我的测试只是以空指针异常而失败,我的restTemplate交换(在调试时)返回一个空值。我做错什么了吗? 如果它有助于Rest寺庙交换有以下定义: 对给定的URI模板执行HTTP方法,将给定的请求实体写入请求,并以ResponseEntity的形式返回响