出于某种原因,自2天以来,我一直在尝试测试对数据库的异步调用,我要做的就是简单地将一个新用户发送到数据库,并确保调用onSuccess()方法以通过测试。
这就是我所做的
@Captor private lateinit var callbackCaptor: ArgumentCaptor<RegisterInteractor.RegisterCallBack>
@Mock
lateinit var view: RegisterContract.View
@Mock
lateinit var interactor: RegisterInteractor
lateinit var presenter: RegisterPresenter
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
presenter = RegisterPresenter(interactor)
presenter.attachView(view)
}
@Test
fun should_SignUpUser(){
presenter.signUp("testUser","testUser@gmail.com","123456")
verify(interactor).createUserWithEmailAndPassword("testUser","testUser@gmail.com","123456",callbackCaptor.capture())
verify(callbackCaptor.value.onRegistrationSucces(), times(1))
}
我在这里要做的是确保onSuccess()回调在完成后被调用一次,但是我在此行遇到此错误
verify(interactor).createUserWithEmailAndPassword("testUser","testUser@gmail.com","123456",callbackCaptor.capture())
java.lang.IllegalStateException:callbackCaptor.capture()不得为 空
我已经阅读并尝试找到解决方案,但是如果有人知道更好的方法或更简单的方法,我将无法执行此简单的操作