繁体   English   中英

当 controller 中的 mocking 时,总是在数组列表中返回 NullPointerException

[英]Always return NullPointerException in array list when mocking in controller

我尝试在 controller 中使用 JUnit 和 Mockito 进行简单的单元测试。 我嘲笑了这个服务,因为它会被 controller 调用。 这是代码

@RunWith(MockitoJUnitRunner.class)
class MsCustomerControllerTest {
    
    @Mock
    MsCustomerService customerServiceMock;

    
    @InjectMocks
    MsCustomerController customerController;
    
    @Test
    void test() {
        fail("Not yet implemented");
    }
    

    
    @Test
    public void findAllCustomerTest() {
        
        List<MsCustomer> listCustomer = new ArrayList<MsCustomer>();
        listCustomer.add(new MsCustomer(1, "Rosa", "Titian Indah", LocalDateTime.now()));
        listCustomer.add(new MsCustomer(2, "Rosa2", "Titian Indah2", LocalDateTime.now()));
        when(customerServiceMock.findAllCustomer()).thenReturn(listCustomer);
        
        ResponseEntity response = new ResponseEntity(listCustomer, HttpStatus.OK);
        
        
        assertEquals(response, customerController.findAllCustomer());
    }

}

注意:customerController 也返回响应实体,因此也使用响应实体进行断言。

这是结果

在此处输入图像描述

我尝试了其他方法,它也给了我 NullPointerException。

尝试添加一个 init 方法并使用@BeforeEach对其进行注释。 然后在方法里面添加MockitoAnnotations.initMocks(this); 它初始化使用 Mockito 注释注释的字段。

@RunWith(MockitoJUnitRunner.class)
class MsCustomerControllerTest {
    
    @Mock
    MsCustomerService customerServiceMock;

    
    @InjectMocks
    MsCustomerController customerController;

    @BeforeEach
    void initMock() {
        MockitoAnnotations.initMocks(this);
    }
    
    @Test
    void test() {
        fail("Not yet implemented");
    }
    

    
    @Test
    public void findAllCustomerTest() {
        
        List<MsCustomer> listCustomer = new ArrayList<MsCustomer>();
        listCustomer.add(new MsCustomer(1, "Rosa", "Titian Indah", LocalDateTime.now()));
        listCustomer.add(new MsCustomer(2, "Rosa2", "Titian Indah2", LocalDateTime.now()));
        when(customerServiceMock.findAllCustomer()).thenReturn(listCustomer);
        
        ResponseEntity response = new ResponseEntity(listCustomer, HttpStatus.OK);
        
        
        assertEquals(response, customerController.findAllCustomer());
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM