我在SessionsController上有这个自定义创建方法:
def create
puts "!!!!!!!!!!!!!!!"
if view_only?
login_visualizacao
return
end
puts "1111111111111111"
super
puts "2222222222222222"
set_token current_usuario, nil unless !current_usuario
end
尝试使用RSpec进行测试,如下所示:
require 'spec_helper'
describe Usuarios::SessionsController do# do, :type => :controller do
describe 'Realizar login' do
let(:codigo) { '1020' }
let(:senha) { '12345' }
context 'quando o login via API é feito corretamente' do
# let(:user) { Usuario.new(codigo: codigo, password: senha) }
let(:user) { mock_model(Usuario, codigo: codigo, password: senha) }
before do
setup_controller_for_warden
@request.env["devise.mapping"] = Devise.mappings[:usuario]
allow(user).to receive(:authenticatable_salt)
allow(subject).to receive(:super)
sign_in(user)
# allow(subject).to receive(:current_usuario).and_return(user)
allow(subject).to receive(:set_token)
end
end
end
end
我将这些代码放在spec_helper中:
config.include Devise::TestHelpers, type: :controller
config.include Devise::TestHelpers, type: :request
问题是我的RSpec测试没有打印“2222222222”,我认为超级代码没有成功执行,用户没有被记录,因此current_usuario是零。我不知道whatelse失踪了,有人可以帮帮我吗?如何模拟对super方法的调用?