denisslindsey/artisan-test-helpers

此包已被废弃且不再维护。未建议替代包。
此包的最新版本(dev-master)没有可用的许可证信息。

PHP Artisan 测试助手

dev-master 2017-01-03 18:39 UTC

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'),
//     ];
// });