Ruby on rails 无法在rspec控制器测试中设置设计用户属性符号计数。在控制器中将其重置为0

Ruby on rails 无法在rspec控制器测试中设置设计用户属性符号计数。在控制器中将其重置为0,ruby-on-rails,rspec,devise,Ruby On Rails,Rspec,Devise,我有一个控制器进行测试: @first_login = (@user.sign_in_count == 1) 我需要在rspec规范中使用Desive进行设置: 我尝试过四种想法:在所有这些想法中,用户都是这样创建的:user=Factory:member[工厂见下文] user.stubs(:sign_in_count).returns(1) sign_in user get 'index' user.sign_in_count = 1 sign_in user #

我有一个控制器进行测试:

@first_login = (@user.sign_in_count == 1)
我需要在rspec规范中使用Desive进行设置:

我尝试过四种想法:在所有这些想法中,用户都是这样创建的:user=Factory:member[工厂见下文]

  user.stubs(:sign_in_count).returns(1)
  sign_in user
  get 'index'

  user.sign_in_count = 1 
  sign_in user # here user.sign_in_count == 1
  get 'index'  # here user.sign_in_count == 1

  sign_in user
  sign_in user
  get 'index'

  sign_in user
  user.sign_in_count = 1 
  get 'index'
但是,每次在控制器中,特定于设备的用户属性都归零/零

reset_password_token: nil, reset_password_sent_at: nil, 
remember_created_at: nil, sign_in_count: 0, current_sign_in_at: nil, 
last_sign_in_at: nil, current_sign_in_ip: nil, last_sign_in_ip: nil
你知道为什么吗

[specs/factories.rb-工厂女孩]

Factory.define :member, :class => User do |c|
  c.password "a123456h"
  c.first_name "Jack"
  c.last_name "Lee"
  c.email "jxxxx@example.com"
  c.address_street "123 Main"
  c.address_city "Anytown"
  c.address_state "NV"
  c.address_zip "40455"
  c.address_country "USA"
  c.when_account_created 2.days.ago
  c.change_password_count 3
  c.forgot_password_count 2
  c.created_at 2.days.ago
  c.updated_at 10.hours.ago
end

用户如何/从何处开始在规范中创建?

保存用户

似乎我已经解决了规范中的这个问题:

  user = Factory(:customer)
  sign_in user
  user.sign_in_count = 1 
  user.save!
  get 'index'
不确定这是否与Deavise/warden当前的用户助手方法在控制器中的使用方式相同,但它是有效的


如果其他人有更好的解释,我会让它打开。

您是如何创建用户实例的?您使用的是fixture还是factory girl?我已经用factory_girl以及手工创建了这个实例。发生的情况是控制器似乎得到了一个不同于我们设置的用户。我更新了用户的创建方式:user=Factory:member with Factory girl。嗨,戴夫,我们在芝加哥的一个开幕派对上认识了乔希。