【问题标题】:java.lang.IllegalStateException: context.getSharedPrefere…EF, Context.MODE_PRIVATE) must not be nulljava.lang.IllegalStateException: context.getSharedPrefere...EF, Context.MODE_PRIVATE) 不能为空
【发布时间】:2018-06-02 05:38:59
【问题描述】:

这是我的用户类

open class User(val context: Context) : Serializable {

@SerializedName("token")
var tokenFromServer: String = ""
var tokenSharedPreferences: SharedPreferences =context.getSharedPreferences(Constants.USER_TOKEN_PREF, Context.MODE_PRIVATE)

@SerializedName("registered_token")
var token: String = ""
    set(userNewToken) {
        field = userNewToken
        with(tokenSharedPreferences.edit()) {
            putString(Constants.TOKEN_KEY, userNewToken).commit()
        }
        checkLogin() // 토큰이 설정 되면 로그인 상태 변경해준다
    }

fun checkLogin(): Boolean {
    with(context.getSharedPreferences(Constants.USER_TOKEN_PREF, Context.MODE_PRIVATE).getString(Constants.TOKEN_KEY, Constants.EMPTY_TOKEN)) {
        if (this == Constants.EMPTY_TOKEN) return false else return true
    }
    return false
}
}

这是我的测试代码

 @RunWith(MockitoJUnitRunner::class)
 class UserModelTest : InstrumentationTestCase() {

private val TEST_TOKEN_FROM_SERVER = "token"

@Mock
private lateinit var mockUserModel: User
private lateinit var realUserModel: User
var testContext = mock(Context::class.java)

@Before
fun initMocks() {
    testContext = MockContext()
    mockUserModel = User(testContext)
    realUserModel = User(testContext)


    given(realUserModel.tokenSharedPreferences.getString(eq(Constants.TOKEN_KEY), anyString()))
            .willReturn(realUserModel.token)

}
}

我收到“java.lang.IllegalStateException: context.getSharedPrefere...EF, Context.MODE_PRIVATE) must not be null”这条错误消息。

【问题讨论】:

    标签: android kotlin mockito


    【解决方案1】:

    您的代码 context.getSharedPreferences(Constants.USER_TOKEN_PREF, Context.MODE_PRIVATE) 返回 null,因此用于存储此值的变量必须可以为空:

    var tokenSharedPreferences: SharedPreferences? =context.getSharedPreferences(Constants.USER_TOKEN_PREF, Context.MODE_PRIVATE)

    【讨论】:

      猜你喜欢
      • 2021-02-01
      • 2018-05-04
      • 2022-01-09
      • 1970-01-01
      • 2021-12-14
      • 2013-01-28
      • 2019-05-13
      • 2021-02-01
      • 1970-01-01
      相关资源
      最近更新 更多