Только что видел это.
Киви определенно не делает этого сейчас. Вы правы в том, что макеты в нем созданы для «стандартного» аранжировки перед фазой действия.
Продолжая, хотя и на первый взгляд, кажется, что добавление основ для шпионской функциональности не потребует слишком много реинжиниринга. Каждое сообщение (за исключением некоторых важных для реализации, зарезервированных селекторов), которое попадает в макет, проходит -[KWMock forwardInvocation:]
.
По сути, текущий -[KWMock forwardInvocation:]
должен быть изменен для записи / копирования всех вызовов, проходящих через него, вместо того, что он делает сейчас. Это была бы примитивная функциональность, которая позволяла бы проверять ожидания позже, запрашивая записанные вызовы. Конечно, придумать хорошую читаемую форму для проверки тоже нетривиально.
Шпион / макет все равно должен был бы знать, какой класс / протокол он использует для предварительной проверки. Это позволяет создавать действительные сигнатуры методов для селекторов отправленных ему сообщений, что позволяет механизму пересылки во время выполнения генерировать фактическую NSInvocation, которая будет пересылаться.
Сейчас я занят другими делами, чтобы реализовать их, но я буду рад ответить на дополнительные вопросы или объединить любые запросы на извлечение. НТН.