我正在为我正在开发的Laravel软件包进行一些测试,并且我认为当前存在的问题涉及模型的外键之一。在测试中,我试图确认(1)我可以成功创建Task模型的实例,(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!');
}
我认为这与外键有关的原因是:
运行测试时出现的错误是:无法断言两个字符串相等。这是来自 assertRedirect(route('tasks'))的错误。断言,因为代码没有重定向到期望的位置(理论上由于外键约束)。我相信当测试尝试发布数据以创建我的Task模型的实例时,它会失败,因为cron参数中的值在数据库中不存在。
有人有过类似问题的经验,或者成功创建了涉及外键的测试吗?我错过了一些琐碎的事情吗?
谢谢!