使用ArgumentCaptor进行单元测试时出现IllegalStateException

时间:2019-05-01 02:01:30

标签: android unit-testing kotlin

出于某种原因,自2天以来,我一直在尝试测试对数据库的异步调用,我要做的就是简单地将一个新用户发送到数据库,并确保调用onSuccess()方法以通过测试。

这就是我所做的

PresenterTest

@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()不得为   空

我已经阅读并尝试找到解决方案,但是如果有人知道更好的方法或更简单的方法,我将无法执行此简单的操作

0 个答案:

没有答案