我需要身份验证才能成功通过测试。
describe PostsController do
let(:user) { create(:user) }
describe 'POST #create' do
let(:create_post) { post :create, params: { post: attributes_for(:post) } }
before do
post sessions_path, params: { login: user.email, password: user.password }
end
context 'with valid attributes' do
it 'return OK' do
create_post
expect(response).to have_http_status(200)
end
end
end
post session_path
-这不起作用并产生错误:
No route matches {:action=>"/sessions", :controller=>"posts", :login=>"jack@example.com", :password=>"qwerty"}
如何在before
块中将默认的PostsController更改为SessionsController?
答案 0 :(得分:1)
在控制器规格中,您仅与被测控制器通信。如果您需要其他控制器首先创建一些必备对象,请直接在数据库中创建它们。如果您需要经过身份验证的用户,请直接设置session[:user_id]
(或者这是您的身份验证方法)。例如,请参见this answer。
您尝试执行的操作称为“功能规范”(或“集成规范”)。这是另一种类型的规范,您也应该写一些规范。