davispeixoto/laravel-test-generator

1.0.5 2015-02-23 14:30 UTC

This package is auto-updated.

Last update: 2024-09-24 04:21:44 UTC


README

Build Status

此 Laravel 4 包提供强大的测试生成器,以加快您的开发过程。

它基于 PHPUnit 框架提供的骨架生成器以及Jeffrey WayLaravel 4 生成器

第一个不能完全与所有 Laravel 4 应用程序类兼容。通常您需要向类中添加一些依赖项才能使其工作,即使您的项目使用ComposerPSR-0兼容的自动加载器来解决所有问题。

第二个生成一个非常小的测试类。它没有映射所有类的公开方法,并且保留了一切原样。

此生成器加载目标并使用 PHP 反射功能来逆向工程所有公开方法,并提供一个增强的骨架,包括数据提供者的调用。

安装

首先通过 Composer 安装此包。编辑您的项目 composer.json 文件,以要求 davispeixoto/testingtool

"require": {
	"laravel/framework": "4.*",
	"davispeixoto/laravel-test-generator": "1.0.*"
},
"minimum-stability" : "stable"

然后,在终端中更新 Composer

composer update

此操作完成后,下一步是添加服务提供者。打开 app/config/app.php,并向提供者数组添加一个新条目。

'Davispeixoto\TestGenerator\TestGeneratorServiceProvider'

这就完成了!您已经准备就绪。从终端运行 artisan 命令以查看新的 tests:generate 命令。

php artisan

用法

当您需要创建一个新的 PHPUnit 测试类时,请使用 tests:generate。以下是一个示例

php artisan controller:make UserController
php artisan tests:generate UserController

这将生成一个资源控制器和一个测试类 app/tests/UserControllerTest.php,如下所示

<?php
class UserControllerTest extends TestCase {
	
	/**
	 * Tests UserController::index
	 */
	public function testindex()
	{
		//@TODO implement testindex body
	}
	
	/**
	 * Tests UserController::create
	 */
	public function testcreate()
	{
		//@TODO implement testcreate body
	}
	
	/**
	 * Tests UserController::store
	 */
	public function teststore()
	{
		//@TODO implement teststore body
	}
	
	/**
	 * Tests UserController::show
	 *
	 * @dataProvider providershow
	 */
	public function testshow($id)
	{
		//@TODO implement testshow body
	}
	
	/**
	 * Tests UserController::edit
	 *
	 * @dataProvider provideredit
	 */
	public function testedit($id)
	{
		//@TODO implement testedit body
	}
	
	/**
	 * Tests UserController::update
	 *
	 * @dataProvider providerupdate
	 */
	public function testupdate($id)
	{
		//@TODO implement testupdate body
	}
	
	/**
	 * Tests UserController::destroy
	 *
	 * @dataProvider providerdestroy
	 */
	public function testdestroy($id)
	{
		//@TODO implement testdestroy body
	}
	
	
	/**
	 * Data provider function for UserController::show
	 */
	public function providershow()
	{
		return $this->dataProvider('UserController.show.csv');
	}
	
	/**
	 * Data provider function for UserController::edit
	 */
	public function provideredit()
	{
		return $this->dataProvider('UserController.edit.csv');
	}
	
	/**
	 * Data provider function for UserController::update
	 */
	public function providerupdate()
	{
		return $this->dataProvider('UserController.update.csv');
	}
	
	/**
	 * Data provider function for UserController::destroy
	 */
	public function providerdestroy()
	{
		return $this->dataProvider('UserController.destroy.csv');
	}
	
}
?>

为了全面了解用法,我建议首先阅读文章在 Laravel 中测试像老板一样。在 Laravel 4 核心TestCase类中需要进行一些性能调整。

此外,为了添加数据提供者功能,请将以下内容添加到您的 Laravel composer.json 中

"require": {
	"laravel/framework": "4.1.*",
	"davispeixoto/testingtool": "dev-master",
	"keboola/csv" : "dev-master"
},
"minimum-stability" : "dev"

然后,在终端中更新 Composer

composer update

最后,让 TestCase 类如下所示

<?php

class TestCase extends Illuminate\Foundation\Testing\TestCase {
	
	/**
	 * Default preparation for each test
	 */
	public function setUp()
	{
		parent::setUp();
		$this->prepareForTests();
	}

	/**
	 * Creates the application.
	 *
	 * @return \Symfony\Component\HttpKernel\HttpKernelInterface
	 */
	public function createApplication()
	{
		$unitTesting = true;
		$testEnvironment = 'testing';
		return require __DIR__.'/../../bootstrap/start.php';
	}
	
	/**
	 * Migrates the database.
	 * This will cause the tests to run quickly.
	 */
	private function prepareForTests()
	{
		Artisan::call('migrate');
	}
	
	/**
	 * dataProviders Factory
	 * dataProvider Short Description
	 *
	 * @param string $fileName
	 * @return \Keboola\Csv\CsvFile
	 */
	public function dataProvider($fileName) {
		return new Keboola\Csv\CsvFile(__DIR__.'/data/'.$fileName);
	}
}
?>

通过这些小小的改动,您可以真正加快您的 Laravel 应用程序的测试过程。

许可证

此测试生成器是开源软件,许可协议为MIT 许可证

版本控制

本项目遵循语义版本控制