当前位置: 首页 > 后端技术 > PHP

LaravelScout阵列驱动测试

时间:2023-03-30 00:17:32 PHP

文章转发自Laravel专业开发者社区,原文链接:https://learnku.com/laravel/t...LaravelScout阵列驱动是@Sti3bas提供的一款用于测试LaravelScout的包搜索更简单:这个包向LaravelScout添加了一个数组驱动程序,并提供了自定义PHPUnit断言,使与搜索相关的测试功能更容易。该包带有一个Searchfacade,它提供了使搜索更方便的方法:$user=factory(User::class)->create(['name'=>'Oliver',]);$user2=User::withoutSyncingToSearch(function(){returnfactory(User::class)->create(['name'=>'John',]);});Search::assertContains($user)//passes->assertContains($user2)//失败->assertContains($user,function($record){//passesreturn$record['name']==='Oliver';})->assertContains($user,function($record){//失败return$record['name']==='John';})->assertContains($user2,function($record){//失败return$record['name']==='约翰';});Searchfacade有大量方法,您应该在自述文件中找到它们。在我看来,最突出的是fakeRecord方法,它允许您伪造模型的搜索索引记录。$user=factory(User::class)->create(['id'=>123,'name'=>'Peter','email'=>'peter@example.com',]);搜索::fakeRecord($user,['id'=>123,'name'=>'John',],false);$record=User::search()->where('id',123)->raw()['hits'][0];$this->assertEquals('Peter',$record['name']);//失败$this->assertEquals('John',$record['name']);//通过$this->assertTrue(!isset($record['email']));//passes你可以在Sti3bas/laravel-scout-array-driver了解更多关于这个包的信息,获取完整的安装说明并在GitHub上查看源代码)。