Это серьезный вопрос, обещаю.Я провел последние 2 часа, читая столько определений Mock, сколько смог найти, и ни одно из них не объясняет мне это.
У меня есть класс, который я хочу протестировать, и этот класс требует класса mapper как частиего основного конструктора:
open class PoiListViewModel @Inject constructor(
private val mapper: PoiMapper
) : ViewModel() {
В моем модульном тесте у меня есть следующий код:
//Mock objects needed to instantiate the class under test
@Mock lateinit var mapper: PoiMapper
// Class being tested
lateinit var poiListViewModel: PoiListViewModel
@Before
fun setup() {
MockitoAnnotations.initMocks(this)
poiListViewModel = PoiListViewModel(mapper)
}
Мой вопрос к вам, все умные разработчики, что такое макет?И, в частности, сколько из моего исходного класса он повторяет?
Я скажу вам мое предполагаемое определение.Mock - это фальшивый резервный класс, который заменяет мой настоящий класс, , но он ничего не делает, кроме как отслеживает, какие вызовы методов отправляются ему. Если я хочу, чтобы у mock была какая-либо функциональность, янужно заглушить эту функциональность.
По крайней мере, это мой невежественный взгляд на издевательства.Но я, очевидно, обижен, потому что в моем модульном тесте мой «макетный» класс мапперов выглядит как фактический класс мапперов.Если я отлаживаю свой модульный тест, я вижу, как он проходит через весь код моего класса mapper.Я вижу, что он возвращает преобразованные данные.
Вот код класса картографа (если он имеет значение):
open class PoiMapper @Inject constructor() {
fun mockTest(num: Int): Int{
return num *23
}
fun mapToPresentation(domainModel: Poi_Domain): Poi_Presentation {
var test = 3
var results = mockTest(test)
return Poi_Presentation(domainModel.id,domainModel.name,domainModel.description,
domainModel.img_url,domainModel.latitude,domainModel.longitude,domainModel.imgFocalpointX,
domainModel.imgFocalpointY,domainModel.collection,domainModel.collectionPosition,
domainModel.release,domainModel.stampText)
}
}
Может ли кто-нибудь объяснить мне, какая часть издевательства является издевательством над Мокито?Я инстанцировал издевательства неправильно?Может кто-нибудь дать мне лучший способ думать о насмешках, чтобы я мог все это обернуть?