Rails アプリケーションで「create」の機能テストを作成するために、「factory_girl」で「shoulda」を使用しようとすると問題が発生します。シンプルなプロジェクトを作成し、ユーザーをスキャフォールディングし、「shoulda」(私のシステムの現在の gem バージョン 2.11.3 ) と「factory_girl」を test_helper.rb に追加しました。ユーザーを手動で作成するとうまくいきます。失敗を再現する手順は次のとおりです。
- レールプロジェクト
- scaffold ユーザー名:文字列
test_helper.rb に追加:
require 'shoulda' require 'factory_girl'
rake db:移行
ユーザー用に次の機能テストを作成します ( users_controller_test.rb をオーバーライドします) :
class UsersControllerTest < ActionController::TestCase Factory.define(:user) do |u| u.name 'joe' end context "should create user" do context "with valid data" do setup do User.any_instance.expects(:save).returns(true).once User.any_instance.stubs(:id).returns(1001) post :create, :user => {} end should_assign_to :user, :class => User should_set_the_flash_to "User was successfully created." should_redirect_to("user page"){user_path(1001)} end end end
「rake test:functionals」でテストを実行すると、失敗が表示されます:
応答は へのリダイレクトであると予想されて
<http://test.host/users/1001>
いましたが、 へのリダイレクトでした<http://test.host/users>
。
「should_redirect_to」が非推奨になっているのを見たので、「should_redirect_to」でもプレイしましたが、運がありませんでした。あなたはなにか考えはありますか ?
前もって感謝します、
マリアン・ヴァシル・カライマン。