Я пытаюсь выполнить модульный тест класса " AdminService ", который имеет метод " create () ", и в конструкторе мне нужна зависимость, которая AdminRepository .
Я использовал насмешку, чтобы смоделировать хранилище, и передал эту ложь AdminService _contsruct (), но у меня возникла ошибка, когда я запускаю тест, который говорит: Ошибка: Вызов функции-члена create () в null
Это AdminService , который я пытаюсь проверить: я следовал этой статье: Модульные тесты - сложный аргумент, совпадающий с Mockery :: on - правильный путь
use App\Repositories\AdminRepository;
class AdminService {
protected $admin_repo;
public function _contsruct(AdminRepository $admin_repo){
$this->$admin_repo= $admin_repo;
}
public function create($data){
return $this->admin_repo->create($data);
}
}
и тестовый код:
/** @test */
public function it_can_create_Admin(){
$data=[
"first_name"=>"lama",
"last_name"=>"sonmez",
"email"=>"lamasonmez@gmail.com",
"password"=>"secret"
];
$repo_mock = Mockery::mock(AdminRepository::class);
$repo_mock->shouldReceive('create')->once()->with($data)
->andReturn('anything');
$admin_service = new AdminService($repo_mock);
$admin = $admin_service->create($data);
$this->assertInstanceOf(Admin::class,$admin);
}
Я не знаю, что здесь не так, пожалуйста, помогите.
, когда я dd ($ repo_mock) мне кажется, что это не ноль
, но когда я получил dd ($ admin_service), я получил
App\Services\AdminService^ {#4106
#admin_repo: null
}