@ledsun blog

無味の味は佳境に入らざればすなわち知れず

Rails 4.2のtest-unitに苦戦する

Railsのバージョンを上げようと思って、3年ぶりくらいにRails 4.2のアプリケーションに触りました。 テストコードがあるのですが、test-unitです。 この組み合わせを触るのが久しぶりなので苦戦しました。 コミットログを見る限り、3年前に自分でテストコードを書いています。 残念ながら、すっかり忘れています。

テストを実行するのはrakeタスク

まず、テストの実行方法がわかりません。

RubyOnRails を使ってみる 【第 6 回】 テストの書き方によると

Rails のテストをまとめて実行するときには、rake タスクを実行します。

bundle exec rake test

でした。 こういうとき、るびまは古い記事をずっと残してくれていてありがたいです。

テストをペンディングするのはskipメソッド

テストの一部が外部のAPIに依存していました。 上手く通らないので、一時的にペンディングしたいです。 Pendingで探してたのですが、やり方がわかりません。

ruby on rails 3 - How to use the Pending module in ActiveSupport - Stack OverflowによるとRails 3にはpendingメソッドがあったようです。 Rails 3と4との間のコミットをあさって、 pending の代わりにskipを使えば良いという情報を得ました*1

なんか探索ルートを間違えたような気がしますが、解決したので良しとします。

特定のテストファイルを実行する時は環境変数TESTを使う

1つのファイルのテストだけを実行したい時があります。 このときは次のように、環境変数で実行するテストファイルを指定します。

rake test TEST=just_one_file.rb

同僚の id:sanfrecce-osaka さんに教えてもらいました。

追記

test-uintの情報を探したから苦労したのであって、Minitestで探せば良かった気がします。