我在自己的控制器中重寫了SessionsController,並嘗試使用RSpec進行測試。拳,我設置與如何使用RSpec測試Devise Sessions控制器
@request.env["devise.mapping"] = Devise.mappings[:user]
我的規格設計:
require 'rails_helper'
需要 'authentication_helper'
RSpec.describe用戶:: SessionsController,類型:控制器不 包括AuthenticationHelper
描述'創建新會話'做
before(:each) do
setup_auth
end
let(:user) {FactoryGirl.create(:user, username: 'john', email: '[email protected]', password: 'pwd1234')}
it 'should return 200 with valid username and password' do
post :create, user: {login: 'john', password: 'pwd1234'}
expect(response).to have_http_status 200
expect(controller.current_user.id).to eq(user.id)
end
末 結束
我SessionsController只是返回HTTP 401或HTTP 200 當我跑我的天賦,我得到這個錯誤:
NoMethodError: 未定義的方法authenticate?' for nil:NilClass # /usr/local/bundle/gems/devise-3.5.6/app/controllers/devise_controller.rb:103:in
require_no_authentication」 #./spec /controllers/users/sessions_controller_spec.rb:16:in block (3 levels) in <top (required)>' # ./spec/rails_helper.rb:45:in
' #/usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/generic/base.rb:16:in中的塊(3個級別) cleaning' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/base.rb:98:in
清理' #/ usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/configuration.rb:86:在block (2 levels) in cleaning' # /usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/configuration.rb:87:in
調用' #/usr/local/bundle/gems/database_cleaner-1.6.0/lib/database_cleaner/configuration.rb :87:cleaning' # ./spec/rails_helper.rb:44:in
block(2 levels)in'
我在做什麼錯?
沒有辦法測試只是我的會話控制器?我正在通過Ajax執行登錄,這就是爲什麼我只想測試我的控制器是否正確返回200和401。 – jonatasdaniel
正如我在規格文件中看到的那樣,他們需要_require'authentication_helper'_,所以我認爲我應該有文件 – Andres23Ramirez