Как я могу выполнить модульное тестирование и тестирование базы данных в пакете Laravel 4?

Я разрабатываю пакет ссылка здесь для 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

2

Решение

Мне удалось объединить тестирование базы данных с sqlite в памяти.
Я отправляю ответ, так что, возможно, кому-то он понадобится в будущем.

  1. Я создал каталог начальной загрузки внутри каталога тестов
  2. Я изменил phpunit.xml, чтобы загрузить автозагрузку из каталога boostrap: bootstrap="tests/bootstrap/autoload.php"
  3. Внутри директории boostrap у меня 3 файла Git Link , с помощью этих файлов я смог создать приложение Laravel для тестирования
  4. Выше мой тест базы данных, я должен был упаковать миграцию, потому что я не мог заставить приложение запустить 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']);
    });
    
    }
    
    }
    
1

Другие решения


require base_path('vendor/laravel/laravel/bootstrap/start.php');

0

Оформить заказ видео Laracasts. Вы увидите модульное тестирование с Codeception, Behat и PHPUnit. Вы получите представление о том, какие библиотеки использовать, а также о рабочем процессе и процессе разработки с использованием этих инструментов.

https://laracasts.com/search?q=testing&д-где = уроки

0