首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么devise user实例没有被存根?

为什么devise user实例没有被存根?
EN

Stack Overflow用户
提问于 2011-05-06 08:10:33
回答 1查看 266关注 0票数 2

我有一个@user实例,用于登录devise用户。正如Devise wiki所建议的那样,这是一个宏模型:

代码语言:javascript
复制
module ControllerMacros
  def login_user
    before(:each) do
      @request.env["devise.mapping"] = :user
      @user = Factory(:user)
      sign_in @user
    end
  end
end

一般来说,我对存根方法做了不同的事情,但我不明白为什么这个存根不能工作:(注意,@user确实登录了,我成功地使用它来测试属性和其他东西)

代码语言:javascript
复制
@user.stub(:has_tavern_quest?).and_return(true)

看起来存根是有效的(我用@user.has_tavern_quest检查了一下应该是真的),但我只是回来了:

代码语言:javascript
复制
 Failure/Error: flash[:error].should == I18n.t('error.has_quest')
   expected: "You already have a quest to finish !"
        got: nil (using ==)

整个控制器方法是:

代码语言:javascript
复制
quest_type = params[:quest_type]
@quest_minutes = TavernQuest.get_quest_minutes_from_quest_type(quest_type)

flash[:error] = I18n.t('error.invalid_post') and redirect_to tavern_url and return unless [1,2,3,4].include? quest_type.to_i
flash[:error] = I18n.t('error.has_quest') and redirect_to tavern_url and return if current_user.has_tavern_quest?
flash[:error] = I18n.t('error.no_adv_points') and redirect_to tavern_url and return if current_user.adventure_points < @quest_minutes       

current_user.reduce_adventure_points(@quest_minutes.to_i)
TavernQuest.create(:user_id => current_user.id, :start_time => Time.now, :end_time => Time.now + @quest_minutes.minutes, 
                             :duration => @quest_minutes, :quest_type => quest_type)

redirect_to tavern_url

结束

整个规范是:

代码语言:javascript
复制
    it "should redirect to '/tavern' with an error if user already has a tavern quest" do
        @user.stub(:has_tavern_quest?).and_return(true)
        post :create, :quest_type => 3
        flash[:error].should == I18n.t('error.has_quest')
        response.should redirect_to tavern_url
    end

有人知道为什么吗?有什么方法可以让它工作吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-08 09:36:40

已解决:

代码语言:javascript
复制
  def login_user
    before(:each) do
      @user = Factory(:user)
      controller.stub(:current_user) { @user }
      sign_in @user
    end
  end
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5905486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档