У меня есть контроллер -
class PostController extends Controller
{
private $postindexer;
public function __construct(PostIndexer $postindexer)
{
$this->postindexer = $postindexer;
}
public function store(Request $request)
{
$post = new Post;
$post->name = $request->name;
$post->save();
$this->postindexer->index($post);
return response()->json($post, 201);
}
}
В конструктуре этого контроллера внедряется мой класс-сервис "PostIndexer", который после создания поста заносит в индекс elastisearch этот новый, только что созданный пост.
Для тестирования контроллера я использую функциональный тест - захожу просто по адресу, проверяю базу, смотрю код ответа. При этом мне ненужно, чтобы заносился в индекс elasticsearch этот новый пост.
Тестовые метод выглядит следующим образом -
public function testStore()
{
$params = [ 'title' => 'New Post', 'body' => "I'm a content"];
$this->post('/admin/posts', $params)->assertStatus(201);
$post = Post::first()->toArray();
$this->assertDatabaseHas('posts', $post);
}
Вопрос - как мне сделать так, чтобы эта строка кода в классе "PostController" при тестовом post-запросе не срабатывала -
$this->postindexer->index($post);
Как нужно мокнуть эту штуку, чтобы она не вызывалась?