https://laravel.com/docs/5.6/container#introduction
, так как хранилище внедряется, мы можем легко поменять его с другой реализацией.Мы также можем легко «насмехаться» или создавать фиктивную реализацию UserRepository
при тестировании нашего приложения.
Я полагаю, что вы, возможно, в настоящее время создаете свои зависимости следующим образом:
$processor = new Processor()
и $validator = Validator::make(...);
Итак, чтобы использовать ваш макетируемый класс, вы должны использовать внедрение зависимостей, которое просто означает, что ваши классы должны внедрить ваши зависимости с помощью метода __construct
.
Ваш класс Factory
должен быть таким:
class Factory {
$processor;
public function __construct(Processor $processor)
{
$this->processor = $processor;
}
public function setDefault()
{
$this->processor->callingValidator();
}
}
, а ваш Processor
должен быть таким:
class Processor {
$validator;
/**
* The Validator will resolve to your mocked class.
*
*/
public function __construct(Validator $validator)
{
$this->validator = $validator;
}
public function callingValidator()
{
$this->validator->make();
}
}