ruby-on-rails - rspec 不保存到数据库

标签 ruby-on-rails ruby rspec

我正在尝试测试下面的登录方法,但它似乎没有将 data_provider_user 保存到数据库中。我已经使用调试器进行了检查,它工作得很好,直到它离开方法并返回到 rspec 代码,如下所示。我还检查了对象在使用 .valid 保存后是否有效?就是这样,我有点迷路了!

def login
 require 'TwitterOauth'
 @data_provider_user = DataProviderUser.find(params[:id])

 if @data_provider_user.twitter?

  @request_token = TwitterOauth.request_url

  @data_provider_user.access_token = @request_token.token
  @data_provider_user.oauth_token_secret = @request_token.secret

  if @data_provider_user.save
    debugger
    redirect_to @request_token.authorize_url              
  end      

 end
end

测试:

it "should update the tokens" do
    require 'TwitterOauth'
    TwitterOauth.stub(:request_url).and_return(@token)
    debugger
    get :login, {id: @data_provider_user.id}
    debugger
    @data_provider_user.access_token.should_not eq(nil)
    @data_provider_user.oauth_token_secret.should_not eq(nil)
  end

调试器输出:

#<DataProviderUser id: 84, user_id: 63, data_provider_id: 63, username: nil, password: nil, created_at: "2013-02-19 15:21:59", updated_at: "2013-02-19 15:21:59", access_token: nil, update_frequency: nil, oauth_token_secret: nil>

#<DataProviderUser id: 84, user_id: 63, data_provider_id: 63, username: nil, password: nil, created_at: "2013-02-19 15:21:59", updated_at: "2013-02-19 15:22:12", access_token: "186553918-sEAEO2fcvtyO1x99eH4Q4XwVcOYatODCQ5f1TwqD", update_frequency: nil, oauth_token_secret: "gLw2PtUyTZfxIan1gJBnbP7icboXbi98KlUoOn7ycVs">

#<DataProviderUser id: 84, user_id: 63, data_provider_id: 63, username: nil, password: nil, created_at: "2013-02-19 15:21:59", updated_at: "2013-02-19 15:21:59", access_token: nil, update_frequency: nil, oauth_token_secret: nil>

任何帮助将不胜感激!!

------更新--------

实际上代码没有问题,问题是 rspec 没有及时重新加载它。解决这个问题的一种方法是使用:

@data_provider_user.reload 

在刷新对象之前,相应地更新值。

最佳答案

实际上代码没有问题,问题是 rspec 没有及时重新加载它。解决这个问题的一种方法是使用:

@data_provider_user.reload 

在刷新对象之前,相应地更新值。

关于ruby-on-rails - rspec 不保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14961356/

相关文章:

ruby-on-rails - 重新提交 accepts_attachments_for issue

mysql - 返回重复记录

ruby-on-rails - AWS ElasticBeanstalk EC2 到 RDS postgresql 连接

ruby-on-rails - 自定义 Controller Action

ios - 由于权限问题,运行 pod install 进行更新时出错

sql - 在查询的选择中传递参数

ruby - 继承 Machinist 蓝图中的属性

ruby-on-rails - Capybara 单次测试配置

ruby - 如何对使用 RSpec 的 REST API 的方法进行单元测试?

ruby-on-rails - 通过RSpec发送自定义 header