我無法獲得3個測試通過。這裏是失敗:第11.1章中的另一個Rails 3教程問題
Failures:
1) Users micropost associations should have a micropost attribute
Failure/Error: @mp1 = Factory(:micropost, :user => @user, :created_at => 1.day.ago)
Validation failed: User can't be blank
# ./spec/requests/users_spec.rb:69:in `block (3 levels) in <top (required)>'
2) Users micropost associations should have the right microposts in the right order
Failure/Error: @mp1 = Factory(:micropost, :user => @user, :created_at => 1.day.ago)
Validation failed: User can't be blank
# ./spec/requests/users_spec.rb:69:in `block (3 levels) in <top (required)>'
3) Users micropost associations should destroy associated microposts
Failure/Error: @mp1 = Factory(:micropost, :user => @user, :created_at => 1.day.ago)
Validation failed: User can't be blank
# ./spec/requests/users_spec.rb:69:in `block (3 levels) in <top (required)>'
任何想法在哪裏看,將不勝感激。我會發布你需要的任何代碼示例來幫助我追蹤事情。
非常感謝!
根據要求,這裏是user_spec.rb
require 'spec_helper'
describe "Users" do
describe "signup" do
describe "failure" do
it "should not make a new user" do
lambda do
visit signup_path
fill_in "Name", :with => ""
fill_in "Email", :with => ""
fill_in "Password", :with => ""
fill_in "Confirmation", :with => ""
click_button
response.should render_template('users/new')
response.should have_selector("div#error_explanation")
end.should_not change(User, :count)
end
end
describe "success" do
it "should make a new user" do
lambda do
visit signup_path
fill_in "Name", :with => "Example User"
fill_in "Email", :with => "[email protected]"
fill_in "Password", :with => "foobar"
fill_in "Confirmation", :with => "foobar"
click_button
response.should have_selector("div.flash.success", :content => "Welcome")
response.should render_template('users/show')
end.should change(User, :count).by(1)
end
end
end
describe "sign in/out" do
describe "failure" do
it "should not sign the user in" do
visit signin_path
fill_in :email, :with => ""
fill_in :password, :with => ""
click_button
response.should have_selector("div.flash.error", :content => "Invalid")
end
end
describe "success" do
it "should sign a user in and out" do
user = Factory(:user)
visit signin_path
fill_in :email, :with => user.email
fill_in :password, :with => user.password
click_button
controller.should be_signed_in
click_link "Sign out"
controller.should_not be_signed_in
end
end
end
describe "micropost associations" do
before(:each) do
@user = User.create(@attr)
@mp1 = Factory(:micropost, :user => @user, :created_at => 1.day.ago)
@mp2 = Factory(:micropost, :user => @user, :created_at => 1.hour.ago)
end
it "should have a micropost attribute" do
@user.should respond_to(:microposts)
end
it "should have the right microposts in the right order" do
@user.microposts.should == [@mp2, @mp1]
end
it "should destroy associated microposts" do
@user.destroy
[@mp1, @mp2].each do |micropost|
Micropost.find_by_id(micropost.id).should be_nil
end
end
end
end
而且factories.rb:
Factory.define :user do |user|
user.name "JD Skinner"
user.email "[email protected]"
user.password "password"
user.password_confirmation "password"
end
Factory.sequence :email do |n|
"person-#{n}@example.com"
end
Factory.define :micropost do |micropost|
micropost.content "foo bar"
micropost.association :user
end
太感謝你了!
-Kagi
如何是「@ user」被創建還是獲取?你是否創建了類似'factories.rb'文件的東西,併爲該文件中的用戶設置了詳細信息? – 2011-06-12 00:29:57
請發佈您的users_spec.rb文件和您的factories.rb文件的內容。 – 2011-06-12 00:55:33