【发布时间】:2020-05-21 08:02:22
【问题描述】:
我想通过在我的视图模型代码中使用 mockito 创建一个单元测试,但我不知道如何使用 mockito thenReturn 用于包含一些信息的单个数据类。有人可以帮帮我吗?
这是我创建的 viewModel 类代码:
open class DetailViewModel : ViewModel() {
var dataCollection:SendDetail = SendDetail("",0,"","","","")
fun getData(data:SendDetail){
dataCollection.title=data.title
dataCollection.picture=data.picture
dataCollection.category= "Category : " + data.category
dataCollection.genre= "Genre : \n" + data.genre
dataCollection.release= "Release : \n" + data.release
dataCollection.description= "Description : \n" + data.description
}
}
这是我上面代码的单元测试代码:
class DetailViewModelTest {
private lateinit var viewModel: DetailViewModel
private var sendDetail= SendDetail("",0,"","","","")
private val sampleDetail:MovieData = MovieDataObject.listData[1]
private var dummyDetail= SendDetail("Doctor Who",
2131165337,
"Category : " +"Tv Series",
"Genre : \n" +"Action, Adventure, Drama, Fantasy, Sci-fi",
"Release : \n" +"March 26, 2005",
"Description : \n"+ "The Doctor is a Time Lord: a 900 year old alien with 2 hearts, part of a gifted civilization who mastered time travel. The Doctor saves planets for a living – more of a hobby actually, and the Doctor's very, very good at it.")
@Before
fun setUp() {
MockitoAnnotations.initMocks(this)
viewModel = DetailViewModel()
sendDetail.title=sampleDetail.title
sendDetail.picture=sampleDetail.picture
sendDetail.category="Category : " +sampleDetail.category
sendDetail.genre="Genre : \n" +sampleDetail.genre
sendDetail.release="Release : \n" +sampleDetail.release
sendDetail.description="Description : \n"+sampleDetail.description
}
@Test
fun getData() {
val movieEntities = viewModel.getData(sendDetail)
assertNotNull(movieEntities)
assertEquals(dummyDetail,sendDetail)
}
@Test
fun testMockGetData() {
Mockito.`when`(viewModel.getData(sendDetail)).thenReturn(dummyDetail) // <--- this dummyDetail is the problem
val movieEntities = viewModel.getData(sendDetail)
verify(viewModel).getData(sendDetail)
assertEquals(dummyDetail, movieEntities)
}
}
这是错误信息:
Type mismatch: inferred type is SendDetail but Unit! was expected
【问题讨论】:
标签: unit-testing kotlin mockito