2017-06-14 38 views
0

我正在为我们的应用程序编写phpUnit测试,所以为此我编写了一个模型工厂,之后当我尝试运行单元测试时,出现如下错误:“InvalidArgumentException:未知格式化程序'publicId'“。我在Model工厂中声明了表格的所有列名称。是否需要提及工厂中的所有列?InvalidArgumentException:编写单元测试时未知的格式化程序

ModelFactory.php

$factory->define(App\Campaign::class, function (Faker\Generator $faker) { 
return [ 
    'public_id' => $faker->publicId, 
    'client_id' => $faker->clientID, 
    'name' => $faker->name, 
    'criteria_age' => $faker->criteriaAge, 
    'criteria_state' => $faker->criteriaState, 
    'criteria_postcode' => $faker->criteriaPostcode, 
    'dncr_required' => $faker->dncrRequired, 
    'criteria_state' => $faker->criteriaState, 
    'active' => $faker->active, 
    'method' => $faker->method, 
    'server_parameters' => $faker->serverParameters, 
    'parameter_mapping' => $faker->parameterMapping, 
]; 
}); 

\测试\单位\运动\ CampaignTest.php

namespace Tests\Unit\Campaign; 

use App\Campaign; 

use Tests\TestCase; 
use Illuminate\Foundation\Testing\WithoutMiddleware; 
use Illuminate\Foundation\Testing\DatabaseMigrations; 
use Illuminate\Foundation\Testing\DatabaseTransactions; 

class CampaignTest extends TestCase 
{ 
use DatabaseTransactions; 
public function testCampaignCreation() 
{ 
    factory(\App\Campaign::class)->create(['name' => 'tinku']); 
    $this->seeInDatabase('campaigns', ['name' => 'tinku']); 
} 
} 

运行后 “PHPUnit测试/单位/运动/ CampaignTest.php” 我得到这个错误“ InvalidArgumentException:未知格式化程序'publicId'“。我是Laravel的新手我知道有一个创建工厂的程序,但我无法弄清楚。希望有人帮助。谢谢。

回答

0

格式化为法克尔Laravel,你只能使用法克尔格式化法克尔附带。

错误消息只是告诉你,没有这样的格式化程序名为publicId。对于所有法克尔格式化的列表,请参阅:https://github.com/fzaninotto/Faker#formatters

如果你比较你在你的例子中使用它变得越来越明显,你混淆了一些数据库属性的格式化,最有可能的格式化该列表现有示例中的翻译失败?但是我认为你会更清楚地知道,这有希望给你提供你需要的信息来继续设置你的测试用例。