Java 传递给verify()的参数不是ArrayList观察器上的模拟

Java 传递给verify()的参数不是ArrayList观察器上的模拟,java,android,unit-testing,mockito,Java,Android,Unit Testing,Mockito,我创建了一个异步任务的单元测试。它从API获取JSON,我想观察我得到的ArrayList 这是我的密码: public class MovieViewModelTest { @Rule public InstantTaskExecutorRule instantTaskExecutorRule = new InstantTaskExecutorRule(); private MovieViewModel viewModel; private MovieRepository movieRepo

我创建了一个异步任务的单元测试。它从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);
}

我的代码怎么了?

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

尽管您正在定义一个全局观察器变量,并在设置函数中将其初始化为模拟变量,但在GetMovies1->assertNotNullmovies1上覆盖它;这不再是一个模拟了。

我知道,实际上,这个模拟没有任何交互。这个错误
org.mockito.exceptions.misusing.NotAMockException: 
Argument passed to verify() is of type MovieViewModelTest$$Lambda$1/1976870338 and is not a mock!