InvalidArgumentException:编写单元测试时的未知格式化程序

时间:2017-06-14 12:45:11

标签: unit-testing phpunit laravel-5.4 faker

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

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 tests / Unit / Campaign / CampaignTest.php"我收到此错误" InvalidArgumentException:未知格式化程序' publicId'"。我是Laravel的新手我知道有一个创建工厂的程序,但我无法弄明白。希望有人帮忙。感谢。

1 个答案:

答案 0 :(得分:2)

格式化程序来自 Faker 而非 Laravel ,并且您只能使用 Faker 格式化程序 Faker 。< / p>

错误消息只是告诉您没有名为 publicId 的格式化程序。有关所有 Faker 格式化程序的列表,请参阅:https://github.com/fzaninotto/Faker#formatters

如果将该列表与您在示例中使用的格式化程序进行比较,您会越来越明显地将格式化程序与某些数据库属性混淆,很可能是现有示例中的转换失败?但我认为您会更清楚,这有希望为您提供继续设置测试用例所需的信息。