Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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 mockito模拟集_Java_Set_Mockito - Fatal编程技术网

Java mockito模拟集

Java mockito模拟集,java,set,mockito,Java,Set,Mockito,在循环中使用后是否可能进行模拟设置,例如 for(String key: mySet) { ...} 谢谢。有几个选项: 投 使用@Mock注释 示例: Set<String> mySet = (Set<String>) mock(Set.class); Set mySet=(Set)mock(Set.class); --或-- @Mock 私有集mySet; @以前 public void doBefore()引发异常{ MockitoAnnotations.in

在循环中使用后是否可能进行模拟设置,例如

for(String key: mySet) { ...}

谢谢。

有几个选项:

  • 使用@Mock注释
  • 示例:

    Set<String> mySet = (Set<String>) mock(Set.class);
    
    Set mySet=(Set)mock(Set.class);
    
    --或--

    @Mock
    私有集mySet;
    @以前
    public void doBefore()引发异常{
    MockitoAnnotations.initMocks(this.getClass());//这将为对象创建mock。。。
    }
    
    虽然nicholas的回答非常清楚地解释了如何模拟集合,但我认为你的问题也暗示了你想在循环过程中模拟集合的行为

    要实现这一点,您首先需要知道您的代码只是语法糖,并扩展到:

    for (Iterator iterator = mySet.iterator(); iterator.hasNext();) { 
        String key = (String) iterator.next(); 
        ...
    }
    
    (有关详细信息,请参阅Stackoverflow问题)

    这表明您需要模拟
    iterator()
    方法。按照nicholas所述设置模拟后,您可以像这样模拟迭代器方法:

    when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
       @Override
       public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
          return Arrays.asList("A", "B").iterator();
       }
    });
    
    when(mySet.iterator()).thenAnswer(new-Answer()){
    @凌驾
    公共迭代器应答(InvocationMock调用)抛出Throwable{
    返回Arrays.asList(“A”、“B”).iterator();
    }
    });
    
    他询问是否有办法模拟for循环中集合的行为。
    when(mySet.iterator()).thenAnswer(new Answer<Iterator<String>>() {
       @Override
       public Iterator<String> answer(InvocationOnMock invocation) throws Throwable {
          return Arrays.asList("A", "B").iterator();
       }
    });