Есть два способа создания новых модульных тестов для написания классов в Codeception.
use Codeception\Util\Stub as Stub;
$SomeClass = new SomeClass();
$SomeClass = Stub::construct('SomeClass');
Может кто-нибудь объяснить, в чем разница между этими двумя подходами?
new SomeClass
создает обычный экземпляр класса,
Stub::construct('SomeClass')
создает двойник класса с заменой некоторых методов или свойств.
Как указано в http://codeception.com/docs/reference/Stub#construct
Свойства и методы могут быть установлены в третьем аргументе. Даже защищенные и частные свойства могут быть установлены.
Нет разницы между ними (и нет причин использовать заглушку), если вы не переопределяете какие-либо свойства или методы.
Других решений пока нет …