作成の動機
Test::Fixture::DBIには既存のDBからテーブル定義と中身をdumpするツールが付属しています.
これを使うとさくっとテスト用のfixtureが生成できます.
生成したFixureを書き換えて使ってもいいのですが,yamlだと量が増えたときに閲覧性が低いと感じました.
そこで使い慣れたmysqlのconsoleっぽく見れると便利なんじゃないかと思い,Test::Fixutre::DBI::Consoleを作成しました.
追記
これは内部でTest::mysqldを使ってfixutre作成専門のmysqldを立ち上げます.
配布場所
現在はgithubのみです.PAUSE IDが貰えたらCPANも考えます.Test::Fixutre::DBI::Console
使い方
Test::Fixture::DBI::Consoleをinstallすると"test_fixture_console"コマンドもinstallされます.このコマンドでshellに入ります.
まずはテーブル定義とデータを生成します.
yoshi@mb yoshi% test_fixture_console mysql fixture> create table hoge (id int primary key auto_increment); Affected 0 rows fixture> show tables; +----------------+ | Tables_in_test | +----------------+ | hoge | +----------------+ Affected 1 rows fixture> insert hoge (id) values (1),(2),(3); Affected 3 rows fixture> select * from hoge; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ Affected 3 rows # DBと中身をyamlに書き出し fixture> make_database test1.yaml Create database schema file: test1.yaml fixture> make_fixture test1_fixture.yaml Create fixture file: test1_fixture.yaml
先ほど書き出したyamlの中身
yoshi@mb yoshi% cat test1.yaml --- - data: "CREATE TABLE `hoge` (\n `id` int(11) NOT NULL AUTO_INCREMENT,\n PRIMARY KEY (`id`)\n) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1" schema: hoge yoshi@mb yoshi% cat test1_fixture.yaml --- - data: id: 1 name: 1 schema: hoge - data: id: 2 name: 2 schema: hoge - data: id: 3 name: 3 schema: hoge
test1.yamlとtest1_fixture.yamlをloadしてみます.
yoshi@mb yoshi% test_fixture_console mysql fixture> show tables; +----------------+ | Tables_in_test | +----------------+ +----------------+ Affected 0 rows fixture> construct_database test1.yaml Load database schema from test1.yaml fixture> show tables; +----------------+ | Tables_in_test | +----------------+ | hoge | +----------------+ Affected 1 rows fixture> construct_fixture test1_fixture.yaml Load fixture from test1_fixture.yaml fixture> select * from hoge; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ Affected 3 rows
TODO
- テスト足りなすぎ
- PODもちゃんと書く
- SQLiteでも動かしたい
- モジュール名はこれでいいのか
- 明らかにリファクタリングが必要
0 件のコメント:
コメントを投稿