2015-09-09 2 views
1

У меня проблема с параметризацией списка объектов с помощью spock where block. Кажется, что значение ListInput не принимает из предложения where и всегда принимает нулевое значение. Я проверил ту же функцию для строковых и других примитивных типов, и она работает нормально. Поддерживает ли Spock объекты параметризации? Если да, то в чем проблема.Параметрирование объектов в споке

def "check Param Of List of Objects"() 
{ 

     expect: 
     def a= hasflag(ListInput); 
     a== flag 
     where: 
     ListInput | flag 
     BOList1 | true 
     BOList2 | false 
} 

Здесь тип BOList1 является Java ArrayList содержит объект

+0

Вы пробовали называя его 'boList1' без капитализации –

+0

Что заводное и Спок версии? –

ответ

2

Вы действительно не предоставили достаточно информации для окончательного ответа, но я постараюсь помочь.

Блок, где блок не является только блоком кода, больше похож на ряд параметров, переданных методу. Это может сделать много, но иногда вам нужно передать свой код немного по-другому.

отметить:
- Пустота методы не допускается (но вы можете обойти эту проблему с помощью .with {})
- итерационный параметр не может быть также производный параметр (построенный из других параметров)
- Если вы ссылаетесь на переменные уровня класса (определенные в классе, но вне этого теста), им необходимо предоставить аннотацию @Shared для ваших тестов, чтобы иметь доступ.

Предоставлено больше информации о том, откуда происходят ваши списки, поможет мне дать лучший совет.


Окончательный совет; явно типаж своих параметров, чтобы увидеть, если это дает вам больше информации

def "check Param Of List of Objects"(ArrayList listInput, boolean flag) { 
    expect: 
     flag == hasflag(ListInput); 
    where: 
     listInput | flag 
     BOList1 | true 
     BOList2 | false 
} 
+0

. Я аннотировал всю ссылочную переменную с помощью «@Shared», и это сработало для меня. Я использовал переменную статического класса для списка, у которого есть ссылка вне теста. Но даже для статической ссылки он работает, когда я не использую где-то блок, то есть, напрямую передавая список в hasflag (BOList1). В любом случае, сейчас он отлично работает. благодаря –

Смежные вопросы