крофьИзГлаз.jpg
Вы не задумывались, почему в моках можно подменять методы, а не свойства?
Основной смысл мока в том, что вы можете задать и проконтролировать его поведение.
1. Прочитайте про PSR, не плодите каку.
2. Моки имеет смысл делать без конструктора И прописывать заглушки под вызываемые методы.
3. Методы, что не должны быть вызваны - тоже заменяются заглушками, но в expects заганяете never.
4. Старайтесь не использовать статику, на сколько это возможно. Тестировать ее возможно только косвенно.
5. Старайтесь соблюдать SOLID. В вашем примере может это конечно неудачное название, но ивент как правило - это некий скоп данных, не стоит обременять его логикой.
6. Работа с бд в ActiveRecord может и удобная, на для тестов - эт говно, сточки зрения безопасности и расширения - увы, тоже. Конкретно в вашем случае создайте отдельный метод, который будет обновлять ваш идентификатор, напишите тест для него который будет работать с БД. Для ивента вам стоит проверять только тот факт, что метод вызвался с корректными данными.