Я использую Laravel 5.6 для разработки сайта.
В настоящее время я хочу написать тестовые коды для сайта.Я также новичок в построении веб-сайта в целом, и это кривая обучения для меня, чтобы понять, что я делаю неправильно.
Я создал профиль на основе модели пользователя, и профиль должен редактироваться толькотолько для аутентифицированного пользователя.
Форма фактически работает без ошибок на стороне браузера, но после запуска phpunit произойдет сбой.
Тестовый скрипт:
/** @test */
public function an_authenticated_user_can_view_the_profile_page()
{
// Generate fake instance of authenticated user
$this->be($user = factory('App\User')->create());
// Will get the URL
$response = $this->get('/profile/'.$user->name);
// Check whether the string exists
$response->assertSee('Personal details for '.$user->name);
}
Контроллер:
class ProfileController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function show(User $user)
{
return view('user.profiles.show', compact('user'));
}
public function update(Request $request)
{
$this->validate(request(), [
'company' => 'required',
'street' => 'required',
'city' => 'required',
'zip_code' => 'required',
'state' => 'required',
'country' => 'required',
'phone' => 'required',
]);
$profile = \Auth::user()->profile;
$profile->update($request->all());
return back()->with('success', 'Profile updated!');
}
}
Вид:
<div class="heading">
<h3 class="text-uppercase">Personal details for {{ $user->name }}</h3>
</div>
<form method="POST" action="/profile">
{{method_field('PATCH')}}
{{csrf_field()}}
<input type="hidden" value="{{ $user->profile->id }}" name="id">
<div class="col-md-6">
<div class="form-group">
<label for="company">Company</label>
<input id="company" type="text" class="form-control" name="company" value="{{ $user->profile->company }}" required>
</div>
</div>
</form>
Изображение с закомментированной формой теста: Закомментированная форма
Изображение без комментариев Форма теста: Не комментированная форма
Я довольно озадачен, почему мой тест не пройден, когда я вставляю форму стег значения.Если я закомментировал форму или просто удалил тег значения, тест пройдет успешно.
Я искал несколько дней и до сих пор не могу найти правильный ответ на этот вопрос.Я использую правильное утверждение?Что мне здесь не хватает?Любые материалы помогут мне лучше понять это.Спасибо!