1

rspec を使用して Rails 3.2 アプリケーションでビューをテストしています。

ビューに追加の入力フィールドを含めるテストを作成しましたが、正しく失敗しました。ただし、必要な入力フィールドを追加した後でも、テストは同じように失敗します。それらは端末にフォームを出力します。ビューで何も変更していないかのようです。

ブラウザーでビューを調べると、実際にはフィールドが存在するため、テストはパスするはずです。

rspec は最新のビューをロードしていませんか?

ここにいくつかのコードがあります(私はそれを2つのフィールドに減らしました):

it "renders the form to sign up" do
    rendered.should have_selector("form", action: "/users", method: "post") do |form|
        form.should have_selector("input#user_email", name: "user[email]", type: "email")
        form.should have_selector("input#user_city", name: "user[city]", type: "text")
    end
end

電子メールの入力は、私が以前持っていた古い入力であり、それを認識します。都市の入力は新しく、端末のビュー出力にも表示されません。

私は何を間違っていますか?

4

1 に答える 1

0

うわー、これはトリッキーでした。

私はデバイスを使用しており、そのビューをテストしたいと考えていました。私のビューテストでは、次のように言いました。

describe "devise/registrations/new" do
  # code here
end

しかし、先日スコープ ビューに切り替え、それに応じてビュー フォルダー名を からdeviseに変更しましたusersuserスコープ ビューは、 やなどのさまざまなユーザー モデルがadminあり、それらにさまざまなビューが必要な場合に適しています。config/initializers/devise.rb既存のスコープ行を次のように置き換えることで、スコープ ビューをオンにすることができます。

config.scoped_views = true

したがって、仕様の説明も次のように変更する必要がありました

describe "users/registrations/new" do # change to "users" instead of "devise"
  # code here
end

私はこれをしなかったので、それはまだデバイスの標準ビューをレンダリングしました.viewsフォルダにビューが見つからないときにレンダリングされます.更新されたコードがありませんでした。

于 2013-01-22T16:04:02.490 に答える