unit test ユニットテストの準備
ユニットテストをする時には、test/unit/ ディレクトリの中にある、ユニットテスト用のファイルを実行します。
ユニットテストは、単体試験とか、単体テストなんていう呼び名が使われることもあります。
でも、ユニットテストを実行する前に準備が必要なのヨネ!
では、例として、
として出来たプロジェクト myapp の、
ファイルを実行するための準備手順を書いておきます。Honyarara モデルに対するユニットテストのためのファイルですね。
まず、準備をしないで無謀にもいきなり、
という風に実行しようとすると、
というエラーが表示されてしまいます。
これは、myapp_test という名前のデータベースが作成されていないのです。
この時点で、おそらく myapp_development という名前のデータベースは作成されているのでしょうがね、ユニットテストでは別の DB を使用するのでした。
なので、myapp_test という名前のデータベースを作成します。以下は MySQL の例ですけど・・・。
こんどこそ、ということで、ユニットテストを実行しようとしてみます。
今度もまたエラーメッセージが表示されてしまいます。
どうやら、Honyarara モデルに対する honyararas テーブルが存在しないようです。
ですので、myapp_development データベースから myapp_test データベースへ、DB テーブルを移行しなければなりません。
手取り足取り移行してもいいのですが、イッパツで myapp_development データベースから myapp_test データベースへ移行できるコマンドがあります。
早速実行しましょう。
ただし、データは移行しませんのであしからず。
再びユニットテストを試してみましょう。
と、無事実行できました。ヤッタネ!
【広告】
ユニットテストは、単体試験とか、単体テストなんていう呼び名が使われることもあります。
でも、ユニットテストを実行する前に準備が必要なのヨネ!
では、例として、
# 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
と、無事実行できました。ヤッタネ!
【広告】
スポンサーサイト