unit-testing - 然后在将 mockito 与 kotlin 一起使用时返回一个数据类
问题描述
我想通过在我的视图模型代码中使用 mockito 创建一个单元测试,但我不知道如何将 mockitothenReturn
用于包含一些信息的单个数据类。有人可以帮我吗,拜托。
这是我创建的 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
解决方案
您fun getData(data:SendDetail)
的返回类型为 void。
只需在参数后面加上返回类型即可,例如:fun getData(data:SendDetail): String
推荐阅读
- django - 如何下载与帖子链接的文件?
- java - android千位分隔符和两位小数
- python - 在 Google Cloud Function 中为 Google Cloud Storage 使用 compose 时出现 404 错误
- powershell - Powershell复制数据输出
- discord - Discord.py 将我的声音克隆到其他频道
- javascript - React - 双花括号与一个大括号之间的区别枚举属性
- delphi - TINiFile 的最大文件大小是多少?
- ansible - Ansibe:连接来自 with_items 的项目
- sas - 在循环中为多个参数运行 sas 程序
- sql-server - SQL 第一个和最后一个事务报告