denisslindsey / artisan-test-helpers
PHP Artisan 测试助手
Requires
- php: >=5.6.0
- illuminate/console: >=5
- laravel/framework: >=5
This package is not auto-updated.
Last update: 2020-01-24 16:27:41 UTC
README
此包为您的 Laravel 项目添加了 3 个新的 artisan
命令,以帮助使您的 TDD 工作流程更加容易。
php artisan make:featuretest {名称}
php artisan make:unittest {名称}
php artisan make:factory {类}
还包括一个 Laravel 服务提供者。此提供者将在您的项目的 /test/
和 database
目录中生成名为 /stubs/
的目录,允许您自定义这些命令生成的文件。
受 Adam Wathan 的 "Test Driven Laravel" 课程启发 https://adamwathan.me/test-driven-laravel/
设置
要开始,请将包添加到您的 composer.json 文件中的 require-dev
部分
"dennislindsey/artisan-test-helpers": "dev-master"
运行 composer update
后,您需要注册 Laravel 服务提供者。您可以将其添加到您的 /config/app.php
'providers' => [ ... DennisLindsey\ArtisanTestHelpers\Providers\ArtisanTestHelperServiceProvider::class, ],
...或者,我建议将以下代码添加到您的 app/Providers/AppServiceProvider.php
文件中的 register()
方法内
public function register() { if ($this->app->environment() !== 'production') { $this->app->register(\DennisLindsey\ArtisanTestHelpers\Providers\ArtisanTestHelperServiceProvider::class); } // ... }
请确保发布 stubs
目录
$ php artisan vendor:publish --provider="DennisLindsey\ArtisanTestHelpers\Providers\ArtisanTestHelperServiceProvider"
用法
$ php artisan make:featuretest NameOfFeature
这将在您的项目 /tests/feature/
目录中生成一个名为 NameOfFeatureTest.php
的文件
<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class NameOfFeatureTest extends TestCase { // use DatabaseMigrations; protected function setUp() { parent::setUp(); // Shared test setup code should be placed after parent::setUp() } /** @test */ function testNameOfFeature() { // Arrange // Act // Assert } }
$ php artisan make:unittest NameOfUnit
这将在您的项目 /tests/unit/
目录中生成一个名为 NameOfUnitTest.php
的文件
<?php use Illuminate\Foundation\Testing\WithoutMiddleware; use Illuminate\Foundation\Testing\DatabaseMigrations; use Illuminate\Foundation\Testing\DatabaseTransactions; class NameOfUnitTest extends TestCase { // use DatabaseMigrations; protected function setUp() { parent::setUp(); // Shared test setup code should be placed after parent::setUp() } /** @test */ function testNameOfUnit() { // Arrange // Act // Assert } }
$ php artisan make:factory User
这将在您的项目 /database/factories/
目录中生成一个名为 UserFactory.php
的文件
<?php $factory->define(App\User::class, function (Faker\Generator $faker) { // static $password; return [ // 'name' => $faker->name, // 'email' => $faker->unique()->safeEmail, // 'password' => $password ?: $password = bcrypt('secret'), // 'remember_token' => str_random(10), ]; }); // $factory->state(App\User}::class, 'deleted', function ($faker) { // return [ // 'deleted_at' => date('Y-m-d H:i:s'), // ]; // });