Hey everyone I am facing a weird error when im stu...
# mockk
v
Hey everyone I am facing a weird error when im stubbing a suspend function to return a serialized data My test fails with exception that, it cannot be serialized due to null value This is my stubbing
Copy code
val user = User(
    displayName = "",
    contactNumber = "",
    location = null,
    email = "",
    profileImageUrl = "",
    connectionCount = 0,
    followersCount = 0,
    id = "",
    summary = "",
    tagline = "",
    slug = "",
    totalExperienceInMonths = 0,
    createdAt = DateHelpers.now,
    isFollowed = false,
)
val resultUser = user.copy(token = Arb.string().
coEvery {
    apiService.createUser(user, "", "")
} returns resultUser

//call function to test
userRepo.createUser(user, "", "")
Which returns fine, when i debug using breakpoints But the function which I am testing, does this internally
Copy code
preferences.user = json.encodeToString(user)
Which crashes the test, even though the type User is Serializable Stack trace in thread 🧵
Copy code
Parameter specified as non-null is null: method kotlinx.serialization.encoding.AbstractEncoder.encodeStringElement, parameter value
java.lang.NullPointerException: Parameter specified as non-null is null: method kotlinx.serialization.encoding.AbstractEncoder.encodeStringElement, parameter value
	at kotlinx.serialization.encoding.AbstractEncoder.encodeStringElement(AbstractEncoder.kt)
	at com.medial.app.data.models.user.User.write$Self$models_debug(User.kt:8)
	at com.medial.app.data.models.user.User$$serializer.serialize(User.kt:8)
	at com.medial.app.data.models.user.User$$serializer.serialize(User.kt:8)
	at kotlinx.serialization.json.internal.StreamingJsonEncoder.encodeSerializableValue(StreamingJsonEncoder.kt:226)
	at kotlinx.serialization.json.internal.JsonStreamsKt.encodeByWriter(JsonStreams.kt:31)
	at kotlinx.serialization.json.Json.encodeToString(Json.kt:81)
	at com.medial.app.data.repo.user.UserRepository.setUser(UserRepository.kt:170)
	at com.medial.app.data.repo.user.UserRepository.createUser(UserRepository.kt:57)
	at com.medial.app.data.repo.user.UserRepositoryTest$testCreateUser$1$1$2.invokeSuspend(UserRepositoryTest.kt:97)
	at com.medial.app.data.repo.user.UserRepositoryTest$testCreateUser$1$1$2.invoke(UserRepositoryTest.kt)
...........