无效的参数异常 - Laravel单位测试



我正在运行一个单元测试以检查

  1. 查看页面存在
  2. 断言文本出现在页面上,并带有字符串限制

我得到一个无效的参数例外:

1) TestsFeatureViewAllPostTest::testCanViewAllPosts
InvalidArgumentException: You requested 1 items, but there are only 0 items available.
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateSupportArr.php:472
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateSupportCollection.php:1486
C:projectscar-torque-laraveldatabasefactoriesPostFactory.php:12
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoryBuilder.php:274
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoryBuilder.php:292
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentConcernsGuardsAttributes.php:122
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoryBuilder.php:300
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoryBuilder.php:219
C:projectscar-torque-laravelvendorlaravelframeworksrcIlluminateDatabaseEloquentFactoryBuilder.php:178
C:projectscar-torque-laraveltestsFeatureViewAllPostTest.php:19

我的源代码如下:

测试功能

namespace TestsFeature;
use AppPost;
use TestsTestCase;
class ViewAllPostTest extends TestCase
{
    /**
     * @group posts
     *
     * @return void
     */
    public function testCanViewAllPosts()
    {
        //arrange
        $post = factory(Post::class)->create();
        //action
        $response = $this->get('/posts');
        //assert
        $response->assertStatus(200);
        $response->assertSee($post->body);
        $response->assertSee(str_limit($post->body));
    }
}

工厂班级

use AppPost;
use AppUser;
use FakerGenerator as Faker;
$factory->define(Post::class, function (Faker $faker) {
    return [
        'body' => $faker->text,
        'user_id' => User::all()->random()->id,
        'created_at' => now(),
        'updated_at' => now(),
    ];
});

'user_id' => User::all()->random()->id,

在工厂的上面行中,您需要随机ID形成用户表。但是,在运行测试之前,您是否创建了任何用户。在使用Post Factory创建发布之前,至少应创建用户。

最新更新