HartlのRuby On Railsチュートリアルの機能を少し変更しようとしています。新しい統合テストから完全に不思議なエラーが発生しています。Hartlの変更で統合テストが失敗するsample_app
これは申し込みページにあります。ユーザー名、電子メール、パスワードのフィールドの代わりに、私は電子メールと質問フィールドしか持っていません。フォームは名前が変更されたフィールドを除いて同じです(暗号化されていない電子メールの場合はbaremailフィールドを使用しています - データベースの電子メールアドレスを暗号化します)。ルート設定は同じです(一致する '/ signup'、:to => 'users#new')。
は、ここで指定/要求/ users_spec.rbファイルの関連部分です:
require 'spec_helper'
describe "Users" do
describe "signup" do
describe "failure" do
it "should not accept a bogus email" do
lambda do
visit signup_path
fill_in "Question", :with => ""
fill_in :baremail, :with => " bogus email"
click_button
response.should render_template('users/new')
response.should have_selector("div#error_explanation")
end.should_not change(User, :count)
end
it "should not accept a question without an email" do
lambda do
visit signup_path
fill_in :question, :with => "What, me worry?"
fill_in :baremail, :with => ""
click_button
response.should render_template('users/new')
response.should have_selector("div#error_explanation")
end.should_not change(User, :count)
end
(。これらの二つのテストはFILL_INための2つの異なるプロトコルを使用していることに注意してください)
は、ここで私は応答して何を得るのです:
1) Users signup failure should not accept a bogus email
Failure/Error: fill_in "Question", :with => ""
Nokogiri::CSS::SyntaxError:
unexpected '(' after 'DESCENDANT_SELECTOR'
# ./spec/requests/users_spec.rb:11:in `block (5 levels) in <top (required)>'
# ./spec/requests/users_spec.rb:9:in `block (4 levels) in <top (required)>'
2) Users signup failure should not accept a question without an email
Failure/Error: fill_in :question, :with => "What, me worry?"
Nokogiri::CSS::SyntaxError:
unexpected '(' after 'DESCENDANT_SELECTOR'
# ./spec/requests/users_spec.rb:22:in `block (5 levels) in <top (required)>'
# ./spec/requests/users_spec.rb:20:in `block (4 levels) in <top (required)>
...など。 Signup_pathを文字列で置き換えようとしましたが(signup_pathが定義されていない場合)、効果はありません。私はRspecファイルの:questionと:email行を入れ替えました。どちらか最初にエラーが発生します。
ところで、ページは正常に動作します。それは失敗しているテストだけです。
無知の手がかりはありますか?
通常の機能のように見える奇妙な方法。 – sevenseacat