Мне сложно это объяснить, но я постараюсь сделать его как можно более простым. Я пишу модульный тест, в котором функция (getQualityControlCheckDataForUplift ()) доступна в другом классе, но она попадает в функцию и делает то, что ей нужно. Предполагается, что он напрямую возвращается к оператору возврата.
Это функция. Должен ли я издеваться над QualityControlCheck
, который является data class
Я сократил код, чтобы сделать его немного яснее и легче следовать
В моем тестовом примере
- Я загружаю MAP - qualityControlChecksDataProvider.loadMapWithQCChecksForMilestone ()
- Затем orderStateMonitor обращается к этой карте при вызове orderStateMonitor.upliftedVolumeUpdated () в тестовом примере. какой стажер обращается
getQualityControlCheckDataForUplift()
через showQualityControlChecks()
- не может войти в
getQualityControlCheckDataForUplift()
не уверен, почему
любые предложения будут очень полезны, я действительно извиняюсь, если код не прост понять
fun getQualityControlCheckDataForUplift(qualityControlMilestone: QualityControlMilestone, uplift: Float):
ArrayList<QualityControlCheck>? {
val qcChecksForUplift: ArrayList<QualityControlCheck>? = ArrayList()
val qcChecksForMilestone = mapOfQCChecksForMilestone[qualityControlMilestone.milestoneText]
qcChecksForMilestone?.forEach {
if (it.uplift == uplift) qcChecksForUplift?.add(it)
}
return qcChecksForUplift
}
Мой тестовый пример
@RunWith(MockitoJUnitRunner::class)
class OrderStateMonitorTest : BaseTest() {
@InjectMocks
private lateinit var orderStateMonitor: OrderStateMonitor
@Mock
private lateinit var qualityControlCheckRequiredDuringFuellingBus: QualityControlCheckRequiredDuringFuellingBus
@Mock
private lateinit var qualityControlChecksDataProvider: QualityControlChecksDataProvider
@Before
fun setUp() {
qualityControlChecksDataProvider = QualityControlChecksDataProvider(offlineDataStorage, app)
}
@Test
fun `upliftedVolumeUpdated abcdefg`() {
qualityControlChecksDataProvider.loadMapWithQCChecksForMilestone()
every(fuelOrderValuesProvider.upliftedVolume()).thenReturn(1000.0f)
orderStateMonitor.upliftedVolumeUpdated()
verify(qualityControlCheckRequiredDuringFuellingBus, never()).postUnavailable()
verify(qualityControlCheckRequiredDuringFuellingBus, once()).postAvailable(qualityControlChecks)
}
}
OrderStateMonitor
class OrderStateMonitor @Inject constructor(
private val orderStorage: CurrentOrderStorage,
private val fuelOrderValuesProvider: FuelOrderValuesProvider,
private val noServiceRequiredAvailabilityBus: NoServiceRequiredAvailabilityBus,
private val qualityControlCheckRequiredDuringFuellingBus: QualityControlCheckRequiredDuringFuellingBus,
private val qualityControlChecksDataProvider: QualityControlChecksDataProvider
) {
fun upliftedVolumeUpdated() {
showQualityControlChecks()
}
private fun showQualityControlChecks() {
// WHEN I TRY TO ACCESS ` //qualityControlChecksDataProvider.getQualityControlCheckDataForUplift` IT DOES NOT GET INTO THAT FUNCTION
val qualityControlChecks =
qualityControlChecksDataProvider.getQualityControlCheckDataForUplift(
QualityControlMilestone.FUELLING, 1000.0f)
}
}
QualityControlChecksDataProvider
class QualityControlChecksDataProvider @Inject constructor(
private val offlineDataStorage: OfflineDataStorage,
private val app: App
) {
private val mapOfQCChecksForMilestone = LinkedHashMap<String, ArrayList<QualityControlCheck>?>()
fun loadMapWithQCChecksForMilestone() {
QualityControlMilestone.values().forEach {
mapOfQCChecksForMilestone.put(it.milestoneText, getQualityControlCheckDataForMilestone(it))
}
}
fun getQualityControlCheckData(qualityControlMilestone: QualityControlMilestone):
ArrayList<QualityControlCheck>? =
mapOfQCChecksForMilestone[qualityControlMilestone.milestoneText]
fun getQualityControlCheckDataForUplift(qualityControlMilestone: QualityControlMilestone, uplift: Float):
ArrayList<QualityControlCheck>? {
//DOES NOT GET INTO THIS FUNCTION I RUN THE TEST CASE
val qcChecksForUplift: ArrayList<QualityControlCheck>? = ArrayList()
val qcChecksForMilestone = mapOfQCChecksForMilestone[qualityControlMilestone.milestoneText]
qcChecksForMilestone?.forEach {
if (it.uplift == uplift) qcChecksForUplift?.add(it)
}
return qcChecksForUplift
}
//THERE ARE OTHER PRIVATE FUNCTION WHICH THE ABOVE CODE WILL ACCESS WHICH WORK FINE
}