Я использую Spock, чтобы проверить Java-код. Например, у меня есть следующий класс Java: < /p>
public class Github implements RemoteRepository {
@Override
public Boolean isBranchExist(String branch) {
return new HttpRequest().post();
}
}
< /code>
Сам класс httprequest также является моим Java-Class. Я пытаюсь издеваться над созданием экземпляра класса httprequest.def "mocking HttpRequest constructor"() {
given:
RemoteRepository repository = new Github()
def request = Mock(HttpRequest)
GroovyMock(HttpRequest, global: true)
new HttpRequest() >> request
and:
request.post() >> Boolean.FALSE
when:
def res = repository.isBranchExist("branch_exist")
then:
res == false
}
< /code>
Надее не происходит, тест не проходит. Oracle OpenJdk 23.0.1: < /p>
plugins {
id 'groovy'
}
dependencies {
implementation 'org.apache.groovy:groovy-all:4.0.27'
implementation 'net.bytebuddy:byte-buddy:1.17.5'
testImplementation 'org.spockframework:spock-core:2.4-M6-groovy-4.0'
}
tasks.named('test') {
useJUnitPlatform()
}
< /code>
p.s. Я понимаю, что могу перепроектировать архитектуру, передать экземпляр HttpClientBuilder в конструктор GitHub, который обеспечит возможность отправлять HTTP -запросы (как это делается в библиотеке Apache HttpComponents), а не создавать объекты HTTPRequest напрямую, но я заинтересован в этом конкретном случае, почему он работает в коде, но не работает. /> Код в этом случае значительно упрощен, на самом деле не применим, просто глупый пример < /p>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -java-code
Мак ⇐ JAVA
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение