【问题标题】:I'm trying to test a List of object using Mockito Java Spring boot but I'm getting error (saveAll should return List)我正在尝试使用 Mockito Java Spring boot 测试对象列表,但出现错误(saveAll 应返回列表)
【发布时间】:2019-11-25 12:13:23
【问题描述】:

美好的一天,我是 Mockito 的新手,我正在尝试测试一个对象列表。

@Mock
private AudienceCodeTypeRepository repository;

@Mock
private Page<AudienceCodeType> page;

private AudienceCodeTypeService underTest;

@Mock
private List<AudienceCodeType> listOfObject;

List<GenericReferenceCodeInput> testObj;

public void testBulkSave() throws Exception {

    AudienceCodeType obj = new AudienceCodeType();

    obj.setInternalid(1L);
    obj.setCode("1");
    obj.setLegend("Test");
    obj.setStatus("A");
    obj.setAudit(new Audit());
    listOfObject.add(obj);

    listOfObject = Arrays.asList(obj);
    doReturn(obj).when(repository).saveAll(listOfObject);       

    GenericReferenceCodeInput actualProduct = new GenericReferenceCodeInput();
    actualProduct.setCode("1");
    actualProduct.setLegend("Test");
    actualProduct.setStatus("A");
    testObj.add(actualProduct);
    testObj = Arrays.asList(actualProduct);

    List<AudienceCodeType> testObject = (List<AudienceCodeType>) underTest.bulkInsert(testObj);
    assertEquals(true, obj.getClass().isInstance(actualProduct));
    assertEquals(listOfObject.get(0), testObject.get(0));
    assertEquals(listOfObject.get(1), testObject.get(1));
    assertEquals(listOfObject.get(2), testObject.get(2));
    assertEquals(listOfObject.get(3), testObject.get(3));
}

}

但我收到一个错误:

org.mockito.exceptions.misusing.WrontTypeOfReturnValue saveAll() 不能返回 AudienceCodeType saveAll 应该返回 列表

【问题讨论】:

    标签: spring-boot mockito junit4


    【解决方案1】:

    你应该替换

     AudienceCodeType obj = new AudienceCodeType();
    

    List<AudienceCodeType> obj = Collections.singletonList(newAudienceCodeType());
    

    【讨论】:

    • 感谢您的回复,我现在很困惑,我要如何向其中添加对象?你有例子吗?。
    【解决方案2】:

    修改后的代码.....

    @SuppressWarnings("unchecked")
    @Test
    public void testBulkSaveAllPass() throws Exception {
        List<AudienceCodeType> result = new ArrayList<AudienceCodeType>() {
            private static final long serialVersionUID = -2557717330663162468L;
        {
            add(new AudienceCodeType() {{
                setInternalid(1L);
                setCode("1");
                setLegend("Test1");
                setDescription("JUnit Test 1");
                setStatus("A");
                setAudit(new Audit());
            }});
            add(new AudienceCodeType() {{
                setInternalid(2L);
                setCode("2");
                setLegend("Test2");
                setDescription("JUnit Test 2");
                setStatus("A");
                setAudit(new Audit());
            }});
        }};
    
        doReturn(result).when(repository).saveAll(any(List.class));
        doReturn(Optional.of(new AudienceCodeType()),
                 Optional.of(new AudienceCodeType()))
                    .when(repository).findOne(any(Example.class));
    
        MultipleEntitiesReport<AudienceCodeType> testObject = 
                underTest.bulkInsert(new ArrayList<GenericReferenceCodeInput>(){
                    private static final long serialVersionUID = -6802324625468779673L;
                {
                    add(new GenericReferenceCodeInput() {{
                        setCode("1");
                        setLegend("Test1");
                        setDescription("JUnit Test 1");
                        setStatus("A");
                    }});
                    add(new GenericReferenceCodeInput() {{
                        setCode("2");
                        setLegend("Test2");
                        setDescription("JUnit Test 2");
                        setStatus("A");
                    }});
                }});
        assertEquals("Test Return", false, testObject.getPass().isEmpty());     
        assertEquals("Test First Object Code", result.get(0).getCode(), testObject.getPass().get(0).getCode());
        assertEquals("Test Second Object Code", result.get(1).getCode(), testObject.getPass().get(1).getCode());
    
        Mockito.verify(repository, times(2)).findOne(any(Example.class));
        Mockito.verify(repository, times(1)).saveAll(any(List.class));
    }
    

    这是我所做的方法,希望这可能对其他人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-16
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-12
      • 2022-11-13
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多