2017-06-14 68 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

如果你比較你在你的例子中使用它變得越來越明顯,你混淆了一些數據庫屬性的格式化,最有可能的格式化該列表現有示例中的翻譯失敗?但是我認爲你會更清楚地知道,這有希望給你提供你需要的信息來繼續設置你的測試用例。