Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 在单元测试中实例化应用程序类_Unit Testing_Kotlin_Retrofit_Android Testing - Fatal编程技术网

Unit testing 在单元测试中实例化应用程序类

Unit testing 在单元测试中实例化应用程序类,unit-testing,kotlin,retrofit,android-testing,Unit Testing,Kotlin,Retrofit,Android Testing,我试图在Android项目上编写单元测试,但在创建应用程序类实例时遇到了障碍。该项目使用安卓架构组件进行改造和LiveData 目前,我正在尝试测试我的AuthRepository的登录功能,但我无法创建存储库的实例,因为它依赖于一个自定义SharedPrefs类,该类依赖于一个应用程序类 AuthRepository @Singleton class AuthRepository @Inject constructor( val retrofitService: RetrofitSer

我试图在Android项目上编写单元测试,但在创建应用程序类实例时遇到了障碍。该项目使用安卓架构组件进行改造和LiveData

目前,我正在尝试测试我的AuthRepository登录功能,但我无法创建存储库的实例,因为它依赖于一个自定义SharedPrefs类,该类依赖于一个应用程序

AuthRepository

@Singleton
class AuthRepository @Inject constructor(
    val retrofitService: RetrofitService,
    val sessionData: SharedPrefs
) {

    fun login(username: String, password: String): LiveData<LoginResponse> {

        return getCSRF().then {
            if (it.result is GenericResponse.ErrorType) {
                // Error Accepting Terms
                val mutableLiveData = MutableLiveData<LoginResponse>()
                mutableLiveData.value = LoginResponse(listOf(LoginResponse.ErrorType.Generic()))
                mutableLiveData
            }
            else {
                retrofitService.postLogin(LoginBody(username, password))
                    .map {
                        val res = LoginRemote.parseResponse(it.response)
                        return res
                    }
            }
        }
    }
}

通过这种方式设置,我是否可以为我的AuthRepository运行普通的旧单元测试?或者对应用程序的依赖将迫使我使用检测测试来测试我的AuthRepository吗?

1。您可以使用Mockito模拟
应用程序
类:

@Mock private lateinit var context: Application

@Before fun setupTasksViewModel() {
    MockitoAnnotations.initMocks(this)
}
  • 或模拟
    SharedPrefs
    对象

    @Mock private lateinit var prefs: SharedPrefs
    

  • 谢谢既然你已经回答了我很多问题,你介意我们私下聊聊吗?现在我有了这些,我需要弄清楚如何
    观察
    需要LifeCycleOwnersure实例的响应,让我们一起想一想好的,打开聊天室的最佳方式是什么?我想你知道:)我本来打算通过你的链接个人资料与你联系,但它无效?
    
    @Mock private lateinit var prefs: SharedPrefs