Пересмешивание jenkins.model.Job's getLastSuccessfulBuild приводит к тому, что сигнатура метода не применима для типов аргументов - PullRequest
0 голосов
/ 14 мая 2019

Как вы справляетесь с использованием PowerMockito для макетирования методов Jenkins Job, которые возвращают объект RunT , когда кажется, что этот объект не был экспортирован из банки.

При попытке выполнить макетgetLastUnstableBuild У меня возникают проблемы, так как он возвращает RunT, и я не уверен, как имитировать это, так как я не могу получить доступ к RunT.

Я пытался использовать пробный запуск, макет Build икажется, ничего не работает.

@RunWith(PowerMockRunner.class)
@PrepareForTest([Jenkins.class, Job.class, Run.class, Build.class, UserIdCause.class, BuildServerGlobals.class])
class BuildServerJobManagerTest {
    def thisScript

    def expectedJob = 'job'
    def expecteBuildNumber = '1'
    def expectedUser = 'user'

    @Mock
    private Jenkins jenkins

    @Mock
    private Job job

    @Mock
    private Run run

    @Mock
    private Build build

    ...

PowerMockito.when(jenkins.getItemByFullName(expectedJob)).thenReturn(job)
PowerMockito.when(run.getLastUnstableBuild()).thenReturn(run) //fails
PowerMockito.when(run.getLastUnstableBuild()).thenReturn(build) //fails

Отказ

groovy.lang.MissingMethodException: 
No signature of method: hudson.model.Run$$EnhancerByMockitoWithCGLIB$$d8adb2d7
.getLastUnstableBuild() is applicable for argument types: () values: []

1 Ответ

0 голосов
/ 14 мая 2019

Общий RunT не был проблемой.Проблема в том, что рассматриваемый метод является методом класса Job, а не методом класса Run, был проблемой

PowerMockito.when(job.getLastUnstableBuild()).thenReturn(...)
...