基礎Ruby on RailsのasagaoをRails2.3に対応させる その2

      2012/08/15

前回
--通りましたよっと!
これでWebサーバを起動すればトップページが見られると思います。

と、書きましたが、あれ、嘘です。そもそもまだ動いてませんでした。
単体テストが通らない通らない!
なんでだろう・・・ということで試行錯誤しています。

ちなみに、現在使っているRuby on Railsのバージョンは2.3。こいつが鬼門でした。やはり設定などが結構違っているんですね!

では行ってみましょう、続きです。

この前の記事のあと、またunitテストを行うとこんなエラーが出ます
--------------------
undefined method `use_transactional_fixtures='
--------------------
なんでしょう。と思って探してみると・・・

Ruby on Rails 2.3でテストを実行すると、undefined method `use_transactional_fixtures='というエラーになるときの対策

という、そのものズバリなエントリーを発見。
----------
Ruby on Rails 2.3では、TestCaseクラスをTest::Unit::TestCaseからActiveSupport::TestCaseに変更する必要があります。
----------
ということなのだそうです。もうこれは仕方ないので、テストファイルをすべて変更。

しかし、まだまだエラーは続く。

-------------
  1) Error:
test_author(BlogEntryTest):
Fixture::FormatError: a YAML error occurred parsing /var/www/html/***/test/fixtures/members.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
  NameError: uninitialized constant Digest::SHA1
-------------

あれ、なんか見たことあるエラー・・・
よくわかりませんね。
とりあえずこれでぐぐってみる。

-------------
  NameError: uninitialized constant Digest::SHA1
-------------

ヒントを見つけました!--------------------
パスワード暗号化する箇所でロードエラーが発生しているので明示的に Digest::SHA1 をロードするようにします。
------------------------------------------
というわけで、
/test/unit/blog_entry_text.rb
の2行目に
-------------
require 'digest/sha1'
-------------
こいつを追記!
再度、
$ rake db:initialize --trace
をやってみると!!!

-----------------------
Started
........................................F.......
Finished in 16.334701 seconds.
-----------------------

おおおおおおおおおお!!!!!通った!なんか31個あったエラーのすべてがこれで解決したじゃないか!
素敵です。

というわけで、やっとこ単体テストが完了する。
次!

とおもいましたが、眠いのでこの辺でお疲れ様でした。

おすすめ記事一覧

 - Tips