我已经覆盖了Devise的会话控制器类。我正在尝试使用rspec编写测试。在此,要验证具有错误凭据的用户是否通过了测试。谷歌搜索我发现我应该使用expect(subject.current_admin_user.sign_in_count).to eq(0)来验证。但是我的测试失败了,因为subject.current_admin_user.sign_in_count = 1.但是当我使用user_admin.sign_in_count我的测试通过时。为什么这种差异可以帮助我?
RSpec.describe ActiveAdmin::Devise::SessionsController, type: :controller do
let(:user_admin) { create(:admin_user_with_r) }
describe "POST #create_session" do
it "verify a valid user" do
@request.env["devise.mapping"] = Devise.mappings[:admin_user]
post :create, {
:admin_user => {
username: user_admin.username,
email: user_admin.email,
password: user_admin.password
}
}
expect(subject.current_admin_user.sign_in_count).to eq(0)
binding.pry
end
端
答案 0 :(得分:0)
这可能会有所帮助:https://relishapp.com/rspec/rspec-core/v/2-0/docs/subject/implicit-subject
简而言之,您在运行此测试时定义了一个隐式subject
,这与您在测试中创建的user_admin
不同。