subject.sign_in_count和object.sign_in_count之间的区别

时间:2018-01-30 02:25:35

标签: rspec devise

我已经覆盖了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

1 个答案:

答案 0 :(得分:0)

这可能会有所帮助:https://relishapp.com/rspec/rspec-core/v/2-0/docs/subject/implicit-subject

简而言之,您在运行此测试时定义了一个隐式subject,这与您在测试中创建的user_admin不同。