Друзья, всем привет.
Дали задачу по написанию юнит-тестов для контроллеров на Ларавел.
Тесты по assertStatus, assertViewHas - написал.
Теперь нужно написать тесты для остальных методов контроллера, но возникают вопросы, погуглив, исчерпывающие ответы не нашел.. Помогите, пожалуйста!
Вот несколько методов для теста:
1.
class BugsController extends Controller
{
public function track(Request $request) {
if(Bug::create([
'title' => $request->data['title'],
'note' => $request->data['note']
])) { return ['data' => 'Bug tracked']; }
else { return ['data' => 'Something went wrong']; }
}
Если тестировать этот метод, то он произведет запись в БД. А если мне этого не нужно, нужно мокать? (нашел инфу, что некоторые используют тестовую БД, но такой подход тоже не подходит..)
Мог бы кто-нибудь накидать пример теста этого метода плз?
2)
class AccountsController extends Controller
{
public function status(Request $request)
{
$id = $request->input('account_id');
$status = $request->input('status');
$account = Account::where('id', $id)->first();
if ($account->update(['user_status_id' => $status])) {
\Session::flash('status', 'Status updated');
} else {
\Session::flash('error', 'Something went wrong');
}
return redirect()->route('accountlist');
}
}
тут в принципе, понятно: через this->call() обращаюсь к route, передаю post-данные.. В конце проверю на редирект.
как быть с БД снова? Не хочется, чтобы менялась какая-то инфа в БД..
Направьте, пожалуйста, на путь истинный) Заранее спасибо!