1. 配置代码格式管理工具:
composer require squizlabs/php_codesniffer, 使用 php artisan cs 检查代码格式;
2.单元测试用例编写
1./database/factories/ModelFactory.php 中配置每个表的模拟数据,例:
$factory->define(App\Models\Task::class, function (Faker\Generator $faker) {
return [
'description' => $faker->streetAddress,
'type' => $faker->randomElement(App\Models\Order::ORDER_TYPE),
'app_id' => $faker->randomNumber(),
'status' => rand(1, 5),
'keyword' => str_random(5),
'credit' => $faker->randomElement([508, 608, 708]),
'total' => 100,
'release' => 10,
'done' => 10,
'release_count' => 1,
'toke_at' => $faker->dateTime()->format('Y-m-d H:i:s'),
'end_at' => $faker->dateTime()->format('Y-m-d H:i:s'),
];
});
2./tests 中配置一个基础的 TestCase.php,其他的测试用例都继承这里,可以在这里配置统一的校验,统一响应格式,例,
<?php use Laravel\Lumen\Testing\DatabaseMigrations; use Laravel\Lumen\Testing\DatabaseTransactions; abstract class TestCase extends \Laravel\Lumen\Testing\TestCase { use DatabaseTransactions; /** * Creates the application. * * @return \Laravel\Lumen\Application */ public function createApplication() { return require __DIR__ . '/../bootstrap/app.php'; } public function getData() { $this->assertResponseOk(); return @json_decode($this->response->content(), true); } public function dump() { $content = $this->response->content(); $data = @json_encode(@json_decode($content), JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE); if (empty($data) || $data === 'null') { dd($content); } echo ($data) . PHP_EOL; die(); } public function auth() { $user = factory('App\User')->make(); return $this->actingAs($user); } public function signatureJson($uri, $data = [], $method = 'GET', $user = null, $header = ['Authorization' => 'c4ca4238a0b923820dcc509a6f75849b']) { if (empty($user)) { factory(App\User::class)->create(['authorization' => array_get($header, 'Authorization', '')]); } if (is_array($data) || is_string($data)) { $timestamp = \Carbon\Carbon::now()->getTimestamp(); if (is_string($data)) { $data = @json_decode($data); } $data['timestamp'] = $timestamp; ksort($data); $signature = sha1(config('signature.key') . array_get($header, 'Authorization', '') . http_build_query($data)); $data['signature'] = $signature; return $this->json($method, $uri, $data, $header); } $this->assertEquals(1, 0, 'params data invalid.'); } }