Функциональные тесты Laravel Foreign Key - PullRequest
0 голосов
/ 25 сентября 2018

Я работаю над некоторыми тестами для пакета Laravel, который я разрабатываю, и текущая проблема, которая у меня возникла, я полагаю, касается одного из внешних ключей моей модели.В тесте я пытаюсь подтвердить, что (1) я могу успешно создать экземпляр моей модели задач, (2) перенаправить на указанный маршрут и (3) подтвердить, что указанные переменные сеанса существуют.

Ниже приведен мой метод тестирования:

public function it_can_create_task()
{
    $data = [
        'command'   => $this->faker->text(15),
        'cron'      => factory(\Smeechos\TaskScheduler\Models\Cron::class)->create()->id
    ];

    $this->post('task-scheduler/tasks/add', $data)
            ->assertStatus(302)
            ->assertRedirect(route('tasks'))
            ->assertSessionHas('stsp-status', 'success')
            ->assertSessionHas('stsp-message', 'Task Successfully Added!');
}

Причины, по которым я думаю, что это связано с внешним ключом:

  1. Когда я использовал значение для cron параметр, который уже существует в базе данных, он передает.
  2. Когда я использовал значение для параметра cron , которого нет в базе данных, либо сделав его очень большим значением ИЛИиспользуя фабрику, как указано выше, она не работает.

Ошибка, которую я получаю при выполнении теста: Не удалось подтвердить, что две строки равны. Это ошибка, полученная из assertRedirect (route ('tasks')) утверждение, поскольку код не перенаправляет на ожидаемое местоположение (теоретически из-за ограничения внешнего ключа).Я полагаю, что когда тест пытается опубликовать данные для создания экземпляра моей модели Task, он терпит неудачу, потому что значение в параметре cron не существует в базе данных.

Кто-нибудь имел опыт работы с подобными проблемами, илиуспешно создали тест с участием внешнего ключа?Я что-то упускаю из виду?

Спасибо!

...