模拟嵌套服务器响应

时间:2017-09-05 18:39:10

标签: json mockito kotlin

我有以下Json模型:

/**
 * Json model of room response
 */
open class JsonRoom(val BookingData: JsonRoomBookingData,
                    val GeneralData: JsonRoomGeneralData)

/**
 * Json model of room booking data
 */
open class JsonRoomBookingData(val BookingId: Int,
                               val BookingStatus: Int,
                               val RoomId: Int,
                               val RoomName: String,
                               val TimeFrom: Date,
                               val TimeTo: Date,
                               val TimeFromUtc: Date,
                               val TimeToUtc: Date,
                               val Isrecurrence: Boolean,
                               val RecurrenceID: Boolean,
                               val BookingSource: Int,
                               val IsMultiRoom: Boolean,
                               val canBeStarted: Boolean,
                               val canBeClosed: Boolean,
                               val canBeExtended: Boolean)

/**
 * Json model of room general data
 */
open class JsonRoomGeneralData(val CountryID: Int,
                               val FloorID: Int,
                               val FloorNum: Int,
                               val LocationID: Int,
                               val MeetingTitle: String,
                               val NumAttending: Int)

以及我的一个测试中的以下代码失败:

// Arrange
// Setup room mock
val roomBookingDataMock = Mockito.mock(JsonRoomBookingData::class.java)
val roomGeneralDataMock = Mockito.mock(JsonRoomGeneralData::class.java)
val roomMock = Mockito.mock(JsonRoom::class.java)
Mockito.`when`(roomMock.BookingData)
        .thenReturn(roomBookingDataMock)

特别是Mockito.(roomMock.BookingData)时有异常:

org.mockito.exceptions.misusing.MissingMethodInvocationException: when()需要一个必须是'对mock进行方法调用'的参数。 例如: 当(mock.getArticles())thenReturn(文章);

此外,此错误可能会显示,因为: 1.你存在以下任何一个:final / private / equals()/ hashCode()方法。 这些方法无法进行存根/验证。 不支持在非公共父类上声明的模拟方法。 2.在()内部,你不是在模拟上调用方法,而是在其他对象上调用方法。

我错过了什么,这是一个Kotlin问题,因为它包装了Java的getter / setter?我是否需要使用一些我不知道的注释来注释我的Json模型属性?

0 个答案:

没有答案