В последнее время я успешно использую Насмешка с тестами PHPUnit.Тем не менее, в проекте, над которым я сейчас работаю, есть зависимость, которая использует статические вызовы методов для взаимодействия с API.Я изо всех сил пытаюсь протестировать один конкретный вариант использования, и мне кажется, что я найду другой, подобный этому, во время дорожной карты разработки.
Используя этот класс в качестве примера:
namespace Name\Space;
class User
{
/**
* @return \Name\Space\User[]
*/
public static function list(): array
{
// ...
}
public static function create(array $attrs): User
{
// ...
}
}
В случаеЯ просто хочу утверждать, что метод возвращает тип примитива, такой как массив:
Mockery::mock('alias:\Name\Space\User')
->shouldReceive('list')
->andReturn([]);
Он работает нормально, в первую очередь потому, что я не проверяю содержимое массива.
Однако ядолжен вызвать метод create
, который возвращает экземпляр самого класса (User
).Если я сделаю что-то вроде этого:
$user = new \Name\Space\User();
Mockery::mock('alias:\Name\Space\User')
->shouldReceive('create')
->andReturn($user);
Псевдоним, очевидно, не будет работать, потому что класс уже был загружен через автозагрузчик (в данном случае это композитор).
Кто-нибудьесть предложения как это обойти?