DB를 사용하는 패키지가 있고 테스트를 위해 sqlite를 메모리에서 실행할 몇 가지 테스트를 만들고 싶습니다. 당신은 내가 sqlite가 데이터베이스를 만들고 여기에 볼을 처리하기위한 웅변 DB 객체를 생성 할 수있는 지금sqlite 및 laravel eloquent로 phpunit 테스트
use Illuminate\Database\Capsule\Manager;
class TestCaseDb extends \PHPUnit_Framework_TestCase {
protected $db;
protected $tbmsg;
public function setUp()
{
parent::setUp(); // //DONT CARE
League\FactoryMuffin\Facade::getFaker()->unique($reset = true);//DONT CARE
$this->initDb();
$this->initTbmsg(); //DONT CARE
}
protected function initDb() {
//confi gfor the sqlite
$capsule = new Manager();
$capsule->addConnection([
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
$this->db = $capsule->getDatabaseManager();
//loading simple DB tables creation
$importSql = file_get_contents(__DIR__.'/dumps/dump.sql');
$this->db->statement($importSql);
}
}
:
는 지금은이 기본 테스트 클래스가 있습니다. 나는
$this->db->select("whatever");
로를 조회하는 경우
하지만, 지금은 잘 작동합니다.하지만 Eloquent 개체를 사용하려고하면 특정 테이블이 존재하지 않는다고 알려줍니다. (첫 번째 Db에 100 % 존재)
그래서 전설적인 모델은 내가 만든 하나의 DB 연결이 아니라 다른 DB 연결에 연결하려고합니다. 당신은뿐만 아니라 내 GitHub의 패키지의 코드를 볼 수 있습니다
class SimpleTest extends TestCaseDb {
/**
* @test
*/
public function first() {
//the below row works!
//$this->db->insert('insert into conv_users (conv_id, user_id) values (?, ?)', array(1, 2));
//the insert with Eloquent fails....
$data = League\FactoryMuffin\Facade::create('Tzookb\TBMsg\Models\Eloquent\Conversation', []);
$this->assertTrue(true);
}
}
: (지점 DEV) https://github.com/tzookb/tbmsg/tree/dev/tests
감사하지만,이 laravel 내부 테스트하지, 그것은 laravel을위한 패키지입니다. 내 패키지를 테스트하기 위해 sqlite를 사용합니다. –
[여기] (http://laravel.com/docs/4.2/packages#package-migrations)을 읽으십시오. – GiamPy
감사합니다. :) :) laravel 프로젝트의 범위 안에 있지 않습니다. 패키지를 테스트하는 데만 사용됩니다. laravel과 관련이 없으며, laravel 패키지이며 DB 단위를 사용하지만 테스트는 외부에서 실행됩니다. 그것의 범위. –