小编Jam*_*ney的帖子

模拟私人财产

可以说我们有一个这样的类:

class Whatever {
    private var something = false

    fun aMethod(): Int {
        return if( something ) {
            1
        } else {
            0
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

根据文档,看来我应该能够执行以下操作:

val classUnderTest = spyk(Whatever())

every { classUnderTest getProperty "something" } returns true

assertThat(classUnderTest.aMethod()).isEqualTo(1)
Run Code Online (Sandbox Code Playgroud)

但是我得到了错误: io.mockk.MockKException: Missing calls inside every { ... } block

我正在使用Mockk 1.8.5,Kotlin 1.2.51

mockk

5
推荐指数
2
解决办法
1572
查看次数

Android 的 WorkManager 的同时作业数/最大

WorkManager 对同时运行的作业数量是否有上限?

非常简单的例子:

  • 单击按钮,创建 10 个一次性工作
  • 将它们全部排入队列
  • 一次运行 3 个作业,而不是预期的所有 10 个作业

class MainActivity: AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)

        queue.setOnClickListener {
            val jobs = mutableListOf<OneTimeWorkRequest>()

            for( i in 1..10 ) {
                jobs += OneTimeWorkRequestBuilder<MyWorker>()
                    .setInputData(workDataOf("key" to i))
                    .build()
            }

            WorkManager.getInstance().enqueue(jobs)
        }
    }
}

class MyWorker: Worker() {
    override fun doWork(): Result {
        val jobId = inputData.getInt("key", -1)

        Log.d("worker", "starting job: $jobId")

        Completable.timer(10, SECONDS).blockingGet()

        Log.d("worker", "job finished: $jobId")

        return SUCCESS
    }
}
Run Code Online (Sandbox Code Playgroud)

和输出:

08-30 14:03:10.392  9825  9855 …
Run Code Online (Sandbox Code Playgroud)

android android-jetpack android-workmanager

4
推荐指数
1
解决办法
2169
查看次数