Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.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 无法模拟具有列表类型参数的方法_Java_Spring Boot_Junit_Mockito_Junit4 - Fatal编程技术网

Java 无法模拟具有列表类型参数的方法

Java 无法模拟具有列表类型参数的方法,java,spring-boot,junit,mockito,junit4,Java,Spring Boot,Junit,Mockito,Junit4,我有一个这样的方法 public int[] processData(List<Data> dataList){ //business logic } 及 when(processData(Mockito.anyList()).thenReturn(newint[]{1,1}); 但什么都不管用 我将SpringBoot与Java11和Mockito3.1一起使用 还有其他方法可以模拟相同的吗?Mockito利用equal()作为验证/匹配参数值的传统方法 在某些情况下,

我有一个这样的方法

public int[] processData(List<Data> dataList){
    //business logic
}

when(processData(Mockito.anyList()).thenReturn(newint[]{1,1});
但什么都不管用

我将SpringBoot与Java11和Mockito3.1一起使用


还有其他方法可以模拟相同的吗?

Mockito利用
equal()
作为验证/匹配参数值的传统方法

在某些情况下,用户在验证参数值时需要更大的灵活性,因此最好使用参数匹配器,而不是
equal()
方法

注:

  • eq(obj)根据其equals方法检查参数是否等于obj。即使在不使用匹配器的情况下传递实际值,这也适用
  • equals()
    方法要求要使两个列表相等,它们必须以相同的顺序包含相同的元素
  • 如果有两个列表,则列表的类型应匹配

  • 有关详细信息,请参阅文档:

    Mockito利用
    equal()
    作为验证/匹配参数值的传统方法

    在某些情况下,用户在验证参数值时需要更大的灵活性,因此最好使用参数匹配器,而不是
    equal()
    方法

    注:

  • eq(obj)根据其equals方法检查参数是否等于obj。即使在不使用匹配器的情况下传递实际值,这也适用
  • equals()
    方法要求要使两个列表相等,它们必须以相同的顺序包含相同的元素
  • 如果有两个列表,则列表的类型应匹配

  • 有关详细信息,请参阅文档:

    您的示例适用于我:

    import org.junit.jupiter.api.extension.ExtendWith;
    import org.mockito.Mock;
    import org.mockito.junit.jupiter.MockitoExtension;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import static org.mockito.ArgumentMatchers.anyList;
    import static org.mockito.Mockito.when;
    
    @ExtendWith(MockitoExtension.class)
    public class Test {
    
        @Mock
        A a;
    
        @org.junit.jupiter.api.Test
        public void t1() {
            when(a.processData(anyList())).thenReturn(new int[]{1,1});
            System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
        }
    }
    interface Data {}
    interface A {
         int[] processData(List<Data> dataList);
    }
    
    import org.junit.jupiter.api.extension.extendedwith;
    导入org.mockito.Mock;
    导入org.mockito.junit.jupiter.MockitoExtension;
    导入java.util.ArrayList;
    导入java.util.array;
    导入java.util.List;
    导入静态org.mockito.ArgumentMatchers.anyList;
    导入静态org.mockito.mockito.when;
    @ExtendWith(MockitoExtension.class)
    公开课考试{
    @嘲弄
    A A;
    @org.junit.jupiter.api.Test
    公共空间t1(){
    when(a.processData(anyList()).thenReturn(newint[]{1,1});
    System.out.println(Arrays.toString(a.processData(newarraylist()));
    }
    }
    接口数据{}
    接口A{
    int[]进程数据(列表数据列表);
    }
    

    这将打印:
    [1,1]

    您的示例对我很有用:

    import org.junit.jupiter.api.extension.ExtendWith;
    import org.mockito.Mock;
    import org.mockito.junit.jupiter.MockitoExtension;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import static org.mockito.ArgumentMatchers.anyList;
    import static org.mockito.Mockito.when;
    
    @ExtendWith(MockitoExtension.class)
    public class Test {
    
        @Mock
        A a;
    
        @org.junit.jupiter.api.Test
        public void t1() {
            when(a.processData(anyList())).thenReturn(new int[]{1,1});
            System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
        }
    }
    interface Data {}
    interface A {
         int[] processData(List<Data> dataList);
    }
    
    import org.junit.jupiter.api.extension.extendedwith;
    导入org.mockito.Mock;
    导入org.mockito.junit.jupiter.MockitoExtension;
    导入java.util.ArrayList;
    导入java.util.array;
    导入java.util.List;
    导入静态org.mockito.ArgumentMatchers.anyList;
    导入静态org.mockito.mockito.when;
    @ExtendWith(MockitoExtension.class)
    公开课考试{
    @嘲弄
    A A;
    @org.junit.jupiter.api.Test
    公共空间t1(){
    when(a.processData(anyList()).thenReturn(newint[]{1,1});
    System.out.println(Arrays.toString(a.processData(newarraylist()));
    }
    }
    接口数据{}
    接口A{
    int[]进程数据(列表数据列表);
    }
    
    这将打印:
    [1,1]
    您可以尝试使用when(processData(mock(List.class)).thenReturn(new int[]{1,1})但您的变量when(processData(anyList())).thenReturn(new int[]{1,1})也适用于我。

    您可以尝试使用when(processData(mock(List.class)).thenReturn(new int[]{1,1}),但您的变量when(processData(anyList()).thenReturn(new int[]{1,1})也适用于我。

    你所说的“不起作用”是什么意思?发生了什么?你所说的“不起作用”是什么意思?发生了什么?
    import org.junit.jupiter.api.extension.ExtendWith;
    import org.mockito.Mock;
    import org.mockito.junit.jupiter.MockitoExtension;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    import static org.mockito.ArgumentMatchers.anyList;
    import static org.mockito.Mockito.when;
    
    @ExtendWith(MockitoExtension.class)
    public class Test {
    
        @Mock
        A a;
    
        @org.junit.jupiter.api.Test
        public void t1() {
            when(a.processData(anyList())).thenReturn(new int[]{1,1});
            System.out.println(Arrays.toString(a.processData(new ArrayList<>())));
        }
    }
    interface Data {}
    interface A {
         int[] processData(List<Data> dataList);
    }