jeudi 25 avril 2019

Test case throwing error when instantiating presenter

So, this is my first test case made with AndroidStudio, but Im getting a NullPointerException and I think is from the presenter, but the thing that I dont really know is why, because Im instantiating it accordingly how I instantiate it in my view but with the injected mock.

So my test case is simple, it justs needs to test a certain email to be true or not.

class RegisterPresenterTest {

    @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 test_Email_Should_Pass(){
        assertTrue(presenter.isEmailValid("asgas@gmail.com"))
    }
}

Presenter

class RegisterPresenter(registerInteractor: RegisterInteractor) : RegisterContract.Presenter {

    var view: RegisterContract.View? = null
    var registerInteractor: RegisterInteractor? = null

    init {
        this.registerInteractor = registerInteractor
    }
   override fun attachView(view: RegisterContract.View) {
        this.view = view
    }
    override fun isEmailValid(email: String): Boolean {
        return Patterns.EMAIL_ADDRESS.matcher(email).matches()
    }

My RegisterContract.View is just the interface that implements the method in my view.

My RegisterContract.Presenter is the interface that implements isEmailValid() method

Now, the error I'm facing when runing the test case test_Email_Should_Pass is this

java.lang.NullPointerException at com.yawp.presentation.register.presenter.RegisterPresenter.isEmailValid(RegisterPresenter.kt:38) at com.yawp.RegisterPresenterTest.test_Email_Should_Pass(RegisterPresenterTest.kt:40) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26) at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

And I'm confused why I'm having this problem.

Aucun commentaire:

Enregistrer un commentaire