Я реализую rest api с lumen, где я использую в основном процедуры MySql. У меня есть некоторый класс Connection, репозиторий, который внедряется в контроллеры, но я хочу протестировать эти репозитории с заменой класса Connection в Constructor, потому что я использую процедуры, которые мне не нужны.тестовая база данных, где будет вызываться.
Пример RepositoryClass:
class UserRepository {
protected $readConnection;
public function __construct(MydbConnection $readConnection) {
$this->readConnection = $readConnection;
}
public function checkUserPermission(username, password) {
return $this->readConnection->callProcedure('check_perm', [username, password]);
}
}
в тесте у меня есть:
class AuthTest extends TestCase
{
protected $controller;
protected $mockConn;
public function setUp()
{
parent::setUp();
// make mockery object
$this->mockConn = Mockery::mock(MydbConnection::class);
$this->app->instance(MydbConnection::class, $this->mockConn);
// try override userRepository
$repo = $this->app->make(UserRepository::class);
$this->app->bind( UserRepository::class, $repo);
// then override controller
$this->controller = $this->app->make(AuthController::class);
$this->app->bind(AuthController::class, function () {
return $this->controller;
});
}
public function testLogin()
{
$this->post('/auth/login', [
'username' => 'test.dev',
'password' => 'Test123'
]);
$this->mockConn->shouldReceive('callProcedure');
}
}
, но это не работает, не могли бы вы помочьмне, как я могу заменить MydbConnection на объект насмешки?