2010-11-21 20 views
27

私はいくつかのコントローラが既に設定されています。今私はそれらのためのspecテストを書くことを始めたいと思う。スペックファイルを自動的に生成するコマンドはありますか?レールが新しいリソースのためにこれを行うのは分かっていますが、既存のコントローラー/モデルでもそうしているのかどうかはわかりません。既存のコントローラの仕様を生成するにはどうすればよいですか?

答えて

42
rails g rspec:controller ControllerName 

既存のコントローラを無効にするように求められたら、nと入力します。

+6

これが唯一の生成コントローラの仕様ファイル。ヘルパーや工場などの関連ファイルが必要な場合は、次のようにします。 'rails g controller ControllerName -s'最後に-sを指定すると、既存のファイルをスキップして質問に気をつける必要がなくなります何かを上書きすることについて。 – Blimey85

+0

これはモデルでも機能しますか? 'rspec:model'?これはrspec 1に存在しますか? –

+0

'rspec'内の名前空間は通常コントローラを作成しようとしますか?または、あなたは 'rails g controller ControllerName'が何をしているのか考えていますか? –

4

あなたはapplication.rbでRSpecのを設定した場合:その後、

config.generators do |g| 
    g.test_framework  :rspec 
end 

rails g controller thingsは動作します。ファイルが生成されると上書きしないようにします。

すべてのスペックそれが生成されますときのように見えますが、以下である:

require 'spec_helper' 

describe ThingsController do 

    it "should be successful" do 
    get :index 
    response.should be_successful 
    end 

end 

それはむしろ些細だと私は、多くの場合、手動で仕様を作成します。

+6

私は、生成されたテストが時にはそれよりも詳細になることがあることに気付きました。特にリソースを生成する場合、テストにはすべてのRESTメソッドのコードが含まれます。 – picardo

+0

質問のタイトルに「既存のコントローラ」と具体的に言われたので、本文にモデルを含めていないことに気付きました。どちらの方法でも、ジェネレータを再実行し、モデルやコントローラファイルを上書きするように頼んだら「n」と言って、あなたの目的にうまく合います。 :) –

8

2つのオプションがあります。あなたは空のspecファイルをしたい場合は、あなたが試みることができる:今

rails g rspec:controller ControllerName 

あなたは基本的なRESTコントローラの初期仕様でspecファイルをしたい場合は、してみてください:

rails g rspec:scaffold ControllerName 
関連する問題