mockito - Error while doing unit test - "Actually, there were zero interactions with this mock" - Android -
i trying unit test presenter , view in android app following code :
@runwith(mockitojunitrunner.class) public class moviedetailspresenterunittest { @mock networkapi mnetworkapi; @mock networkservice mnetworkservice; @mock moviedetailscontract.view mview; @mock moviedetailsactivity mmoviedetailsactivity; private moviedetailspresenter mmoviedetailspresenter; @before public void setup() throws exception { this.mmoviedetailspresenter = new moviedetailspresenter(mnetworkservice, mmoviedetailsactivity); } @rule public final rxschedulersoverriderule moverrideschedulersrule = new rxschedulersoverriderule(); @test public void testmoviedetailsemptyresponse() throws exception { moviedetails moviedetails = new moviedetails(); when(mnetworkapi.getmoviedetails("abcd")).thenreturn(observable.<moviedetails>just(moviedetails)); mmoviedetailspresenter.loadmoviedetails("abcd"); verify(mmoviedetailsactivity).onsupportnavigateup(); } @after public void teardown() throws exception { rxandroidplugins.getinstance().reset(); } } but error :
wanted not invoked: mmoviedetailsactivity.onsupportnavigateup(); -> @ com.android.sushil.omdbclient.moviedetailspresenterunittest.testmoviedetailsemptyresponse(moviedetailspresenterunittest.java:65) actually, there 0 interactions mock. wanted not invoked: mmoviedetailsactivity.onsupportnavigateup(); -> @ com.android.sushil.omdbclient.moviedetailspresenterunittest.testmoviedetailsemptyresponse(moviedetailspresenterunittest.java:65) actually, there 0 interactions mock. @ com.android.sushil.omdbclient.moviedetailspresenterunittest.testmoviedetailsemptyresponse(moviedetailspresenterunittest.java:65) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ org.junit.runners.model.frameworkmethod$1.runreflectivecall(frameworkmethod.java:50) @ org.junit.internal.runners.model.reflectivecallable.run(reflectivecallable.java:12) @ org.junit.runners.model.frameworkmethod.invokeexplosively(frameworkmethod.java:47) @ org.junit.internal.runners.statements.invokemethod.evaluate(invokemethod.java:17) @ org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:26) @ org.junit.internal.runners.statements.runafters.evaluate(runafters.java:27) @ com.android.sushil.omdbclient.util.rxschedulersoverriderule$3.evaluate(rxschedulersoverriderule.java:45) @ org.junit.rules.runrules.evaluate(runrules.java:20) @ org.junit.runners.parentrunner.runleaf(parentrunner.java:325) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:78) @ org.junit.runners.blockjunit4classrunner.runchild(blockjunit4classrunner.java:57) @ org.junit.runners.parentrunner$3.run(parentrunner.java:290) @ org.junit.runners.parentrunner$1.schedule(parentrunner.java:71) @ org.junit.runners.parentrunner.runchildren(parentrunner.java:288) @ org.junit.runners.parentrunner.access$000(parentrunner.java:58) @ org.junit.runners.parentrunner$2.evaluate(parentrunner.java:268) @ org.junit.runners.parentrunner.run(parentrunner.java:363) @ org.mockito.internal.runners.junit45andhigherrunnerimpl.run(junit45andhigherrunnerimpl.java:37) @ org.mockito.runners.mockitojunitrunner.run(mockitojunitrunner.java:62) @ org.junit.runner.junitcore.run(junitcore.java:137) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:117) @ com.intellij.junit4.junit4ideatestrunner.startrunnerwithargs(junit4ideatestrunner.java:42) @ com.intellij.rt.execution.junit.junitstarter.preparestreamsandstart(junitstarter.java:262) @ com.intellij.rt.execution.junit.junitstarter.main(junitstarter.java:84) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:498) @ com.intellij.rt.execution.application.appmain.main(appmain.java:147)
your mocks mnetworkapi , mview never injected anywhere , hence stubbing
when(mnetworkapi.getmoviedetails("abcd")).thenreturn(observable.<moviedetails>just(moviedetails)); will never happen. since can't see source code moviedetailspresenter guessing lack of stubbing leads logic of onsupportnavigateup() method never being called. need make sure mocks included in mmoviedetailspresenter marking @injectmocks.
@injectmocks private moviedetailspresenter mmoviedetailspresenter; although can't 100% sure until see code more of classes.
Comments
Post a Comment