в Spock-Docs, Mock / Spy / Stub с использованием аргументов конструктора, дается с такой подписью:
def subscriber = Spy(SubscriberImpl, constructorArgs: ["Fred"])
(см .: http://spockframework.org/spock/docs/1.1/all_in_one.html#Spies)
Однако в споке.mock.MockingApi, есть несколько подписей для каждого Spy / Mock / Stub, но если у них есть дополнительные аргументы, у них есть карта в качестве первого аргумента, а затем класс для имитации, например
public <T> T Spy(Map<String, Object> options, Class<T> type)
Теперь у меня есть два вопроса:
1) Как Groovy / Spock заставляет тест работать, если я использую порядок как в документах?На самом деле, это работает ...
2) Весь вопрос возник у меня после обновления IntelliJ с 2017.3 до 2018.1, после которого IntelliJ отказался принять подписчика (в примере выше) как объект типаSubscriberImpl, который он делал до обновления - код не изменился ... Если я переверну вещи и добавлю еще один Bracket и "as Map", все будет нормально, так как это близко к коду в MockingApi:
def subscriber = Spy([constructorArgs: ["Fred"]] as Map<String, Object>, SubscriberImpl)
Но в любом случае, как это изменило поведение с обновлением и как оно работало раньше?Может быть, кто-то может облегчить мое замешательство ...?
Спасибо.