Skip to content

Fixed NPE on MovieDetailFragmentTest mockk dependency#3

Open
cweggler wants to merge 1 commit into
mitchtabian:masterfrom
cweggler:bugFix/Fix-NPEOnRunTime
Open

Fixed NPE on MovieDetailFragmentTest mockk dependency#3
cweggler wants to merge 1 commit into
mitchtabian:masterfrom
cweggler:bugFix/Fix-NPEOnRunTime

Conversation

@cweggler
Copy link
Copy Markdown

Hey @mitchtabian - I ran across a NullPointerException running the MovieDetailFragmentTest when the MoviesRemoteDataSource is mocked via mockk (see stack trace below). Debugging I realized what fixes it is if you mock the interface- MoviesDataSource instead of its implementation. It gets around mockk not knowing how the linkedMap is initialized. Hope this helps other learners!

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.LinkedHashMap.get(java.lang.Object)' on a null object reference
at com.codingwithmitch.espressouitestexamples.data.source.MoviesRemoteDataSource.getMovie(MoviesRemoteDataSource.kt:21)
at com.codingwithmitch.espressouitestexamples.ui.movie.MovieDetailFragmentTest$test_recreateActivity$1.invoke(MovieDetailFragmentTest.kt:44)
at com.codingwithmitch.espressouitestexamples.ui.movie.MovieDetailFragmentTest$test_recreateActivity$1.invoke(MovieDetailFragmentTest.kt:22)
at io.mockk.impl.eval.RecordedBlockEvaluator$record$block$1.invoke(RecordedBlockEvaluator.kt:24)
at io.mockk.impl.eval.RecordedBlockEvaluator$enhanceWithNPERethrow$1.invoke(RecordedBlockEvaluator.kt:74)
at io.mockk.impl.recording.JvmAutoHinter.autoHint(JvmAutoHinter.kt:23)
at io.mockk.impl.eval.RecordedBlockEvaluator.record(RecordedBlockEvaluator.kt:36)
at io.mockk.impl.eval.EveryBlockEvaluator.every(EveryBlockEvaluator.kt:30)
at io.mockk.MockKDsl.internalEvery(API.kt:92)
at io.mockk.MockKKt.every(MockK.kt:104)
at com.codingwithmitch.espressouitestexamples.ui.movie.MovieDetailFragmentTest.test_recreateActivity(MovieDetailFragmentTest.kt:43)
at java.lang.reflect.Method.invoke(Native Method)
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.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.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
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 org.junit.runner.JUnitCore.run(JUnitCore.java:115)
at androidx.test.internal.runner.TestExecutor.execute(TestExecutor.java:56)
at androidx.test.runner.AndroidJUnitRunner.onStart(AndroidJUnitRunner.java:388)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:2074)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant