Я пытаюсь протестировать мой код Kotlin, который имеет типы Arrow-kt, используя Spock в Groovy. Однако я не могу использовать дополнения Arrow-kt, такие как Some
. Например, у меня есть следующий тест:
@Unroll
def "add returns #expected for queryRecord #queryRecord"() {
given:
def ip = "ip"
def rule = "rule"
when:
def result = unit.add(ip, rule)
then:
1 * dynamoDBMapperMock.load(ActionRecord.class, ip) >> queryRecord
result == expected
where:
queryRecord | expected
new ActionRecord() | None.INSTANCE
null | Some(new ActionInternal("ip"))
}
В то время как первая строка данных проходит без проблем, вторая - со следующей ошибкой:
groovy.lang.MissingMethodException: No signature of method: package.name.EventSpec.Some() is applicable for argument types: (package.name.ActionInternal) values: [ActionInternal(dropletIp=null)]
Possible solutions: Mock(), Spy(), Stub(), dump(), Mock(groovy.lang.Closure), Mock(java.lang.Class)
Я тоже пробовал .some()
, но безрезультатно. Очевидно, Groovy не может получить доступ к расширениям Kotlin, но Some
- это просто класс данных [ 1 ], поэтому я не уверен, почему я не могу использовать его в Groovy.