I have the following simple ArrayAdapter
that I'd like to run UnitTests on:
class AccountSpinnerAdapter(context: Context, textViewResourceId: Int, private val values: Set<Account>) : ArrayAdapter<Account>(context, textViewResourceId, values.toList()) {
override fun getCount() = values.size
override fun getItem(position: Int) = values.elementAt(position)
override fun getItemId(position: Int) = position.toLong()
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
val label = super.getView(position, convertView, parent) as TextView
label.text = values.elementAt(position).displayName
return label
}
override fun getDropDownView(position: Int, convertView: View?, parent: ViewGroup): View {
val label = super.getDropDownView(position, convertView, parent) as TextView
label.text = values.elementAt(position).displayName
return label
}
}
getCount
, getItem
and getItemId
is easily done.
But how can I test the getView
and getDropDownView
methods? Problems that I am facing are:
- the 3rd parameter
viewGroup
can not benull
. How to fake/mock thisViewGroup
? - both methods are calling
super.xxx
. How can I set up awhen/then
construct to let it return aTextView
?