1
AS 4.0.2
RxBindings 4.0.0

jakeWartons rxBindings を使用する PublishRelay accept が呼び出されたかどうかをテストするための単体テストを作成しました

これは私がテストしているコードのスニペットです

private val checkStoresRelay: Relay<Unit> = PublishRelay.create<Unit>()

private fun onCheckStockTapped(view: View) {
    view.textViewCheckStock
        .clicks()
        .debounce(TIME_OUT, TimeUnit.MILLISECONDS)
        .subscribeBy(
            onNext = checkStoresRelay::accept,
            onError = { Timber.e(it, it.localizedMessage) }
        )
}

テストクラスでは、次のことを行っています。textViewCheckStock.performClick()がトリガーされ、checkStoresRelay.accept(Unit) が呼び出されたことを確認します。

しかし、私はavailableDeliveryOptionsModel.checkStoresRelay.accept(Unit)テストでこれを呼び出すべきではないと思うので、それについてはわかりません。ただし、これを削除するとテストは失敗します。これをテストする最良の方法は何でしょうか?

@Test
fun `should check stores when checkStock is tapped`() {
    // Arrange
    val viewHolder = createViewHolder()
    availableDeliveryOptionsModel.bind(viewHolder)
    val actual = availableDeliveryOptionsModel.checkStoresRelay.test()

    // Act
    availableDeliveryOptionsModel.checkStoresRelay.accept(Unit)
    viewHolder.itemView.textViewCheckStock.performClick()

    // Assert
    actual.assertValue(Unit)
}

ご提案いただきありがとうございます。

4

2 に答える 2