Mockito - Answer Contains Multiple Value

在撰寫retry行為的測試時,想必會遇到針對不同存取次數要回應不同的結果。本篇文章主要分享我所使用的方式。

(根據不同應用會有不同寫法,有新增我就會更新)

依存取順序回應不同的值

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
 
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
 
public class MultiValueAnswer<T> implements Answer<T> {
 
	private Queue<T> answerValues = new LinkedList<>();
 
	@SafeVarargs
	public MultiValueAnswer(T... values) {
		answerValues.addAll(Arrays.asList(values));
	}
 
	public MultiValueAnswer(){}
 
	@Override
	public T answer(InvocationOnMock invocation) throws Throwable {
		return answerValues.remove();
	}
 
	public void addValue(T value){
		answerValues.add(value);
	}
}