#unit-testing #kotlin
#модульное тестирование #kotlin
Вопрос:
Я использую модульный тест с использованием Kotlin и не могу повторить список объектов в моем тестовом примере, пожалуйста, проверьте мой приведенный ниже код,
@Test
@WithMockOAuth(siteId = "5698965", subPermissions = [SubPermission.GETD])
fun `get fee zero`() {
val body = """
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
}
}
""".trimIndent()
this.server.expect(requestTo("${integrationClientProperties.url}/main/0767777777/register/"))
.andRespond(withSuccess(body, MediaType.APPLICATION_JSON_UTF8))
assertThat(service.getValues("0767777777"))
.hasSize(3)
.first()
.hasFieldOrPropertyWithValue("callMessatgeCount", 3)
.hasFieldOrPropertyWithValue("NewFees", BigDecimal.ZERO)
this.server.verify()
}
Выше я могу проверить hasFieldOrPropertyWithValue
наличие first()
элемента, так как hasSize(3)
мне нужно проверить все 3 значения, которые есть List of Objects
в одном TestCase
методе.
Список объектов, как показано ниже
ListValue:[
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
},
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 0,
"Id" : "extra SIM Business"
},
{
"newMessage": {
"call": true,
"callMessatgeCount": 3,
"discounted": 2,
"NewFees": 4.99,
"Id" : "extra SIM Business"
}
]
Примечание: я пытался element(index)
проверить список объектов, используя несколько тестовых примеров.
Обновлено
Библиотека » org.assertj.core.api.Assertions
и поддерживает java8
Комментарии:
1. На будущее: укажите, какие библиотеки вы используете!
2. как вы сказали, я использую AssertJ, поддерживающий java8, и я решил эту проблему с помощью tuple. Спасибо
Ответ №1:
Предполагая, что вы используете AssertJ из названий методов и что у вас версия, поддерживающая Java-8 (т. Е. 3.5 ), вы можете найти allSatisfy
метод:
Проверяет, что все элементы удовлетворяют заданным требованиям, выраженным потребителем.
Это полезно для выполнения группы утверждений над элементами.
Из документов должно работать что-то вроде следующего
assertThat(service.getValues("0767777777"))
.hasSize(3)
.allMatch { assertThat(it)
.hasFieldOrPropertyWithValue("callMessatgeCount", 3)
.hasFieldOrPropertyWithValue("NewFees", BigDecimal.ZERO)
}
Вы также могли бы изучить библиотеки, специфичные для Kotlin (особенно если вам нужно скомпилировать в JVM 6).