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)
}
ご提案いただきありがとうございます。