2017.07 «  - - 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - - » 2017.09
TOP > unit test ユニットテストの準備

 ← 日本語(UTF-8)を使うための準備 | TOP | partial パーシャルな関係【partial と object】

スポンサーサイト 

--年--月--日 (--)
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


【広告】

[--.--.--(--) --:--] スポンサー広告 | Trackback(-) | Comment(-)
↑TOPへ

unit test ユニットテストの準備 

ユニットテストをする時には、test/unit/ ディレクトリの中にある、ユニットテスト用のファイルを実行します。

ユニットテストは、単体試験とか、単体テストなんていう呼び名が使われることもあります。

でも、ユニットテストを実行する前に準備が必要なのヨネ!

では、例として、

# rails myapp



として出来たプロジェクト myapp の、

test/unit/honyarara_test.rb



ファイルを実行するための準備手順を書いておきます。Honyarara モデルに対するユニットテストのためのファイルですね。

まず、準備をしないで無謀にもいきなり、

# ruby test/unit/honyarara_test.rb



という風に実行しようとすると、

Mysql::Error: #42000Unknown database 'myapp_test'
1 tests, 0 assertions, 0 failures, 2 errors



というエラーが表示されてしまいます。

これは、myapp_test という名前のデータベースが作成されていないのです。

この時点で、おそらく myapp_development という名前のデータベースは作成されているのでしょうがね、ユニットテストでは別の DB を使用するのでした。

なので、myapp_test という名前のデータベースを作成します。以下は MySQL の例ですけど・・・。

# mysqladmin -u root create myapp_test



こんどこそ、ということで、ユニットテストを実行しようとしてみます。

# ruby test/unit/honyarara_test.rb

ActiveRecord::StatementInvalid: Mysql::Error: #42S02Table 'myapp_test.honyararas' doesn't exist
1 tests, 0 assertions, 0 failures, 1 errors



今度もまたエラーメッセージが表示されてしまいます。

どうやら、Honyarara モデルに対する honyararas テーブルが存在しないようです。

ですので、myapp_development データベースから myapp_test データベースへ、DB テーブルを移行しなければなりません。

手取り足取り移行してもいいのですが、イッパツで myapp_development データベースから myapp_test データベースへ移行できるコマンドがあります。

早速実行しましょう。

# rake db:test:prepare



ただし、データは移行しませんのであしからず。

再びユニットテストを試してみましょう。

# ruby test/unit/honyarara_test.rb

Started
.
Finished in 0.110911 seconds.

1 tests, 1 assertions, 0 failures, 0 errors



と、無事実行できました。ヤッタネ!

【広告】

[2007.08.17(Fri) 01:13] RubyOnRails(テスト)Trackback(0) | Comments(0)
↑TOPへ

 ← 日本語(UTF-8)を使うための準備 | TOP | partial パーシャルな関係【partial と object】

COMMENT

COMMENT POST















管理者にだけ表示

 ← 日本語(UTF-8)を使うための準備 | TOP | partial パーシャルな関係【partial と object】
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。