Я недавно пробовал TDD с laravel, и я хочу утверждать, что перенаправление привело пользователя к URL-адресу с целочисленным параметром.Интересно, смогу ли я использовать регулярные выражения для перехвата всех положительных целых чисел.
Я запускаю это приложение с каркасом laravel 5.8 и знаю, что параметр url равен 1, потому что я обновляю базу данных для каждого теста, поэтомуустановка URL-адреса перенаправления как /projects/1
работает, но такое жесткое кодирование кажется странным.
Я приложил блок кода, для которого я пытался использовать регулярное выражение, но это не работает
/** @test */
public function a_user_can_create_projects()
{
// $this->withoutExceptionHandling();
//If i am logged in
$this->signIn(); // A helper fxn in the model
//If i hit the create url, i get a page there
$this->get('/projects/create')->assertStatus(200);
// Assumming the form is ready, if i get the form data
$attributes = [
'title' => $this->faker->sentence,
'description' => $this->faker->paragraph
];
//If we submit the form data, check that we get redirected to the projects path
//$this->post('/projects', $attributes)->assertRedirect('/projects/1');// Currently working
$this->post('/projects', $attributes)->assertRedirect('/^projects/\d+');
// check that the database has the data we just submitted
$this->assertDatabaseHas('projects', $attributes);
// Check that we the title of the project gets rendered on the projects page
$this->get('/projects')->assertSee($attributes['title']);
}
Я ожидал, что тест обработает аргумент в assertRedirect('/^projects/\d+');
как регулярное выражение, а затем передаст любой URL-адрес, такой как /projects/1
, пока он заканчивается числом, но он принимает его как необработанную строку и ожидает URL-адрес /^projects/\d+
Буду признателен за любую помощь.