При моделировании объектов, сгенерированных через AWS API Gateway (SDK), я получаю необычное поведение, которое, скорее всего, является ошибкой Спока.
Например, с учетом следующего тестового примера:
def "testing api gateway"() {
given:
def sdk = Mock(MyAWSSDK.class)
sdk.lookupByField("xyz") >> "result"
when:
def myClass = newClass(sdk)
myClass.foo()
then:
1 * sdk.lookupByField(_)
}
В моем случае, здесь, я получаю исключение нулевого указателя, когда в тестовом примере присутствует "1 * sdk.lookupByField ()".Если я достану его и заменю условие then: на «true».Тестовый пример работает без проблем.Я также могу добавить строку добавления в фазе when: sdk.lookupByField (null) и добавить «1 * sdk.lookupByField ()" обратно в фазу then:.и это похоже на работу.Однако это не идеально.
Это странное поведение со Споком, и, похоже, оно связано с кодом, сгенерированным AWS API Gateway.
Я пробовал обе версии JDK 1.8.0_202 и 11.0.1
Зависимости Maven:
<dependency>
<groupId>org.objenesis</groupId>
<artifactId>objenesis</artifactId>
<version>3.0.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib-nodep</artifactId>
<version>3.2.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>2.4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.bytebuddy</groupId>
<artifactId>byte-buddy</artifactId>
<version>1.9.9</version>
</dependency>
Я планировал создать ошибку с помощью Спока, но хотел обратиться к сообществу, чтобы узнать, можно ли это повторить.Если бы кто-нибудь там был, это было бы очень признательно.