Спок 1.3 тестирует взаимодействие со списком как аргумент, не работает должным образом - PullRequest
0 голосов
/ 16 апреля 2019

Я хотел бы знать, является ли проблема ниже ошибкой или я делаю что-то не так.По сути, у меня есть макет x, который имеет два метода, которые получают два списка (один - saveAll () из данных весны jpa, а другой - список длинных).Для простоты мы заботимся только о поле id из метода saveAll.Я хочу знать, почему первый фрагмент кода работает, а второй - нет.

1 * x.saveAll(*_) >> {
            assert it[0].collect {
                it.id
            } as Set == expected1.collect {
                it.id
            } as Set
        }
1 * x.deleteByIdIn(*_) >> {
            assert it[0] as Set == expected2.collect {
                it.id
            } as Set
        }

Обратите внимание, что в первом утверждении мы сопоставляем список объектов со списком идентификаторов для простоты.тогда как у нас уже есть список идентификаторов во втором.Кроме того, это в основном хак второго метода, потому что я не мог заставить второй метод работать правильно.

  1 * x.saveAll({
            it.collect {
                it.id
            } as Set == expected1.collect {
                it.id
            } as Set
        })
  1 * x.deleteByIdIn({
            it as Set == expected2.collect {
                it.id
            } as Set
        })

Обратите внимание, что мы использовали clojure внутри аргумента метода, который является блоком неявногоутверждения, так как мы используем Спока 1.3.Согласно их документации, Argument Constraints, второй вариант заключается в том, как сделать это правильно и оно должно работать.Данные, с которыми я столкнулся в этом тесте спока, ожидаются1 и ожидаются2 в виде двух списков размеров: 0 0, 1 0 и 0 1. Тест 0 1 не выполняется для deleteByIdIn, так как - очевидно - даже несмотря на то, что ожидаемо 2 - список элементов послесобрать это становится список из одного нуля.

По какой-то инопланетной причине, если я извлек правую коллекцию в данном или где блок

def x = expected1.collect {
                it.id
            } as Set

Затем saveAll начал терпеть неудачу навведите 1 0 с той же самой проблемой -> список одного объекта становится списком с одним нулем после операции сбора.

Извините, я не смог вставить весь код, но, надеюсь, он достаточно ясен, чтобы попытаться воспроизвести и воспроизвестиэто.

...