2011-11-28 37 views
8

Tôi có bộ điều khiển Bài đăng và tôi vừa cài đặt Devise để thêm một số xác thực nhanh chóng và dễ dàng. Trước khi cài đặt Devise, tôi đã tạo một số thử nghiệm cho hành động 'mới' của bộ điều khiển Bài viết của mình. Sau khi cài đặt Devise, các thử nghiệm của tôi không thành công cho đến khi tôi thêm vào sốRspec, Devise, Factory girl - cách đăng nhập người dùng Nhà máy thông qua kiểm tra bộ điều khiển Rspec?

config.include Devise::TestHelpers, :type => :controller 

dòng vào tệp spec_helper.rb của mình.

Tôi cũng có dòng

before_filter :authenticate_user!, :except => [:show, :index] 

trong PostsController tôi.

Bây giờ khi tôi chạy thử nghiệm của tôi, tất cả họ đều vượt qua, ngoại trừ những 2:

it "should be successful" do 
    get :new 
    response.should be_success 
    end 

    it "should have the right title" do 
    get :new 
    response.should have_selector('title', :content => @base_title + " | New post") 
    end 

Tôi đang sử dụng máy cô gái là tốt. Lỗi này là do tham số before_filter ngoại trừ. Tôi cần để có thể đăng nhập vào người dùng trong rspec với một người sử dụng nhà máy. Làm cách nào để tôi ký tên người dùng Nhà máy trong từ trong kiểm tra bộ điều khiển Rspec? Làm cách nào để xác định người dùng Nhà máy?

Tôi đã cố gắng này trong factories.rb tôi:

Factory.define :user do |user| 
    user.name     "Test User" 
    user.email     "[email protected]" 
    user.password    "password" 
    user.password_confirmation "password" 
end 

Nhưng sau đó tôi nhận được lỗi:

NoMethodError: 
    undefined method `password_salt=' for #<User:0x00000103cac958> 

Bất kỳ trợ giúp sẽ được nhiều đánh giá cao. Cảm ơn.

Trả lời

7

Tôi khuyên bạn nên loại bỏ các kiểm tra bộ điều khiển của mình và sử dụng câu chuyện Cucumber thay thế - RSpec không thuận tiện cho việc kiểm tra nội dung của người dùng như Cucumber.

Trong Dưa chuột, bạn muốn đăng nhập thông qua giao diện người dùng để bắt chước chính xác những gì người dùng sẽ làm. Tôi sẽ có xu hướng làm điều tương tự trong một spec điều khiển, mặc dù một số người có thể thích những thứ nhạo báng ra thay vào đó.

Đối với undefined method password_salt=, bạn có di chuyển DB thử nghiệm của mình không?

+0

ahhhh hoàn toàn quên di chuyển DB thử nghiệm ... bây giờ tôi nhận được: 'Thất bại/Lỗi: @user = tạo! (Nhà máy (: người dùng)) ActiveRecord :: RecordInvalid: Xác thực không thành công: Email có thể ' không được để trống, Mật khẩu không được để trống ' – Jack

+0

Mã nào đưa ra lỗi đó? (Thông báo lỗi phải có tên tệp và số dòng.) –

+0

Đó là một thử nghiệm trong Trình điều khiển Bài đăng của tôi trước (: mỗi) làm @user = create! (Nhà máy (: người dùng)) test_sign_in (@user) end' – Jack

Các vấn đề liên quan