Вы должны попытаться определить свою фабрику следующим образом:
$factory->define(Order::class, function (Faker $faker) {
return [
'user_id' => factory(User::class),
});
Если это не помогает, убедитесь, что вы используете в своих тестах DatabaseTransactions
или DatabseMigrations
тест и очистите базу данных перед запуском теста 1-го время. В противном случае, каждый раз, когда вы будете запускать тестирование, вы будете получать все больше и больше записей в базе данных.
Лично я думаю, что использовать утверждение вроде этого:
$this->assertEquals(1, Order::count())
в тестах не очень хорошая идея. Возможно, вы решите создать некоторые другие дополнительные данные, когда создадите более сложный тест, и вам не нужно заботиться о моделях, созданных ранее. Мне лично хотелось бы, чтобы этот тест был таким:
$initialOrdersCount = Order::count();
// here you run some actions you want to test
$this->assertSame($initialOrdersCount + 1, Order::count());
Таким образом, если что-то еще произойдет в приложении или будет добавлено в тест, мне все равно, есть ли в базе данных 2 или 3 модели. Для меня важно, чтобы количество или заказы были увеличены на единицу.