Я разрабатываю пакет ссылка здесь для Laravel 4.2. Я хочу написать модульные тесты и тесты базы данных. Насколько я прочитал, я должен создать экземпляр приложения Laravel, чтобы использовать все функции в тестировании.
Я сделал модификацию на composer.json
и добавил пакет Laravel, как это
"require-dev": {
"phpunit/phpunit" : "4.*",
"laravel/laravel": "4.2.*"},
После composer update
Я создал класс TestCase, подобный классу от Laravel
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__.'/../vendor/laravel/laravel/bootstrap/start.php';
}
Проблема в том, что при выполнении require в start.php у меня возникает ошибка при создании фреймворка с путем
./vjroby/laravel-nonce/vendor/laravel/laravel/vendor/laravel/framework/src
потому что нет такого файла, файл находится в
./vjroby/laravel-nonce/vendor/laravel/framework/src
Мне удалось объединить тестирование базы данных с sqlite в памяти.
Я отправляю ответ, так что, возможно, кому-то он понадобится в будущем.
bootstrap="tests/bootstrap/autoload.php"
Выше мой тест базы данных, я должен был упаковать миграцию, потому что я не мог заставить приложение запустить Miration, я пытался Artisan::call()
без успеха.
<?php
use Mockery as m;
class NonceTest extends Illuminate\Foundation\Testing\TestCase{
public function tearDown()
{
m::close();
}
public function testWithDatabase(){
$nonce = new \Vjroby\LaravelNonce\Nonce();
$nonceId = uniqid();
$nonce->setNonce($nonceId, '');
$nonce = DB::table('nonce')->where('id', $nonceId)->get();
$this->assertTrue(count($nonce) == 1);
$this->assertEquals($nonceId, $nonce[0]->id);
}
/**
* Creates the application.
*
* Needs to be implemented by subclasses.
*
* @return \Symfony\Component\HttpKernel\HttpKernelInterface
*/
public function createApplication()
{
$unitTesting = true;
$testEnvironment = 'testing';
$app = require __DIR__.'/bootstrap/start.php';
$app->register('Vjroby\LaravelNonce\LaravelNonceServiceProvider');
return $app;
}
public function setUp()
{
parent::setUp();
$this->app['config']->set('database.default', 'testing');
$a = __DIR__.'/../src/migrations';
$this->app['config']->set('database.connections.testing', array(
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
));
$this->migrate();
}
public function migrate()
{
Schema::dropIfExists('nonce');
Schema::create('nonce', function(\Illuminate\Database\Schema\Blueprint $table){
$table->string('id',255);
$table->string('data',255)->nullable();
$table->nullableTimestamps();
$table->unique(['id', 'data']);
$table->index(['id', 'data']);
});
}
}
require base_path('vendor/laravel/laravel/bootstrap/start.php');
Оформить заказ видео Laracasts. Вы увидите модульное тестирование с Codeception, Behat и PHPUnit. Вы получите представление о том, какие библиотеки использовать, а также о рабочем процессе и процессе разработки с использованием этих инструментов.