我正在运行一个单元测试以检查
- 查看页面存在
- 断言文本出现在页面上,并带有字符串限制
我得到一个无效的参数例外:
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创建发布之前,至少应创建用户。