Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 模拟服务以返回空列表以测试404状态代码_Java_Spring_Rest_Junit_Mocking - Fatal编程技术网

Java 模拟服务以返回空列表以测试404状态代码

Java 模拟服务以返回空列表以测试404状态代码,java,spring,rest,junit,mocking,Java,Spring,Rest,Junit,Mocking,我正在尝试测试此REST服务,以便在itemService.getActiveItems()返回空的列表时引发未找到(404)错误: @GetMapping("/items/active") public ResponseEntity<List<ItemEntity>> getActiveItems() { List<ItemEntity> activeItems = itemService.getActiveItems();

我正在尝试测试此REST服务,以便在
itemService.getActiveItems()
返回空的
列表时引发未找到(404)错误:

@GetMapping("/items/active")
public ResponseEntity<List<ItemEntity>> getActiveItems() {

    List<ItemEntity> activeItems = itemService.getActiveItems();
    if (activeItems.isEmpty()) {
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    } else {
        return new ResponseEntity<>(activeItems, HttpStatus.OK);
    }
}
@GetMapping(“/items/active”)
公共响应性getActiveItems(){
List activeItems=itemService.getActiveItems();
if(activeItems.isEmpty()){
返回新的ResponseEntity(未找到HttpStatus.NOT_);
}否则{
返回新的响应属性(activeItems,HttpStatus.OK);
}
}
我使用TestRestTemplate来测试:

     @Mock
     private ItemService itemService;
    
            @Test
            public void activeItemsTest() {
            private TestRestTemplate templateAuth;
        
        when(itemService.getActiveItems()).thenReturn(new ArrayList());
            
                    ResponseEntity<List<ItemEntity>> result = templateAuth.exchange("/items/active", HttpMethod.GET,
                            null, new ParameterizedTypeReference<List<ItemEntity>>() {
                            });
                    Assertions.assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
        }
@Mock
私人项目服务项目服务;
@试验
public void activeItemsTest(){
私有TestRestTemplateTemplateAuth;
当(itemService.getActiveItems()).thenReturn(newArrayList());
ResponseEntity result=templateAuth.exchange(“/items/active”),HttpMethod.GET,
null,新的ParameteredTypeReference(){
});
Assertions.assertThat(result.getStatusCode()).isEqualTo(HttpStatus.NOT_FOUND);
}

我正试图使
“/items/active”
端点返回
新的ResponseEntity(HttpStatus.NOT\u FOUND)如我模拟的
itemService.getActiveItems()
返回一个空的
ArrayList
。当我测试
结果时,getStatusCode()不包含404。我应该如何修改测试以返回404错误代码?

您可以使用JUnit 5并使用
@ExtendWith(MockitoExtension.class)
@SpringBootTest
。然后改变

 @Mock
 private ItemService itemService;


因此,您可以模拟自动连接到控制器中的服务的行为

那么,当您测试此功能时,activeItems包含哪些内容?您需要修复您的
activeItemsTest(){}
您有
私有TestRestTemplate templateAuth内部。如果您可以使用junit5,您可能想看看这个示例。您可以@autowire实际的服务类resttempalte..等:
 @SpyBean
 private ItemService itemService;