java - 传递给 verify() 的参数不是 ArrayList 观察者上的模拟

标签 java android unit-testing mockito

我创建了一个异步任务的单元测试。它从 API 获取 JSON,我想观察我得到的 ArrayList。

这是我的代码:

public class MovieViewModelTest {
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule();

private MovieViewModel viewModel;
private MovieRepository movieRepository = mock(MovieRepository.class);
private Observer<ArrayList<Movie>> observer;

@Before
public void setUp(){
    viewModel = new MovieViewModel(movieRepository);
    observer = mock(Observer.class);
}

@Test
public void getMovie() {
    ArrayList<Movie> dummyMovie = viewModel.getArrayMovie();
    MutableLiveData<ArrayList<Movie>> movies = new MutableLiveData<>();
    movies.setValue(dummyMovie);
    when(movieRepository.getListMovie()).thenReturn(dummyMovie);
    observer = movies1 -> assertNotNull(movies1);
    viewModel.getMovie().observeForever(observer);
    verify(observer).onChanged(dummyMovie);
}

但是当我尝试运行它时,它显示一个错误:

org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type MovieViewModelTest$$Lambda$1/1976870338 and is not a mock!

我的代码有什么问题吗?

最佳答案

异常说明了一切:您调用 verify 的对象(您的观察者)不是模拟对象。只能对这些调用验证。您应该将观察者实现更改为模拟。

关于java - 传递给 verify() 的参数不是 ArrayList 观察者上的模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58591015/

相关文章:

eclipse 中的 javacpp 不起作用——ClassNotFoundException(使用 JNI)

java - 无法从 '15.0.1' 确定 Java 版本

android - Android 应用的哪些部分应该是 fragment ?

java - 单元测试断言 TreeMap 中的对象顺序正确?

scala - 如果它们的差异小于 1 秒,如何使用 specs2 断言一个日期等于另一个日期?

c++ - 哪些模拟框架允许对遗留代码进行零更改?

java - 按键可多次按下

java - 正则表达式匹配-Java

Java 二维数组,查找包含的元素

android - SensorTag20 错误扫描服务