spring-boot - Spring 单元测试休息 Controller

标签 spring-boot testing junit get-mapping

测试这些示例获取映射的最佳和最简单的解决方案是什么?你能举一些简单的例子吗?

@GetMapping("/")
public List<UserDto> get() {
    return userService.getUsers().stream().map((User user) -> toUserDto(user)).collect(Collectors.toList());
}

@GetMapping(path = "/{id}")
public HttpEntity<UserDto> findById(@PathVariable(name = "id") long id) {
    User user = userService.unique(id);
    if (user != null) {
        return new ResponseEntity<>(toUserDto(user), HttpStatus.OK);
    } else {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

最佳答案

使用 MockMvc 测试 Controller 端点。

@RunWith(MockitoJUnitRunner.class)
public class UserControllerTest {

  @InjectMock
  private UserContoller controller;

  private MockMvc mockMvc;

  @Before
  public void setup() {
    mockMvc = MockMvcBuilders.standaloneSetup(this.controller).build();
  }

  @Test
  public void testFindById() {

     // build your expected results here 
     String url = "/1";
     MvcResult mvcResult = mockMvc
    .perform(MockMvcRequestBuilders.get(url)
    .andExpect(MockMvcResultMatchers.status().isOk()).andReturn();

    String responseAsJson = "some expected response"; 

    Assert.assertEquals("response does not match", mvcResult.getResponse().getContentAsString(),
    responseAsJson);

   // verify the calls
  }
}

编辑:在此处添加指向我的类似答案的链接以供您引用 Spring 5 with JUnit 5 + Mockito - Controller method returns null

关于spring-boot - Spring 单元测试休息 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48891377/

相关文章:

javascript - JavaScript 测试的 Jenkins 测试覆盖率报告

Eclipse JUnit4 : exclude tests using a name pattern

java - 使用 jUnit 4.12 和 Hamcrest 1.3,我如何断言函数返回两个整数之一?

java - 运行测试时排除 SpringApplicationRunListener

spring-boot - MapStruct 不使用 Kotlin 和 Spring Boot Autowiring ,使用 Gradle 构建

testing - TFS 用户只允许创建错误

nunit - NUnit 是否具有从另一个单元调用测试的内置方式?

java - 在 Junit 中访问延迟加载的实体对象

java - 如何并行调用两个返回 DeferredResult<> 的方法?

java - MongoDB:IllegalStateException:Spring Boot 应用程序中的池已关闭错误消息