没有工厂女孩重装,RSpec测试失败

时间:2014-02-04 04:41:12

标签: ruby-on-rails ruby rspec

我无法让我的一个规范测试通过,直到我在激活后强制重新加载用户对象。我对BDD和rails很新,我在这种情况下完全滥用工厂女孩吗?我应该嘲笑一下吗?

作为参考,我使用巫术宝石进行用户激活。

describe "GET activate" do
  context "with valid attributes" do
    it "activates a new user" do
      user = FactoryGirl.create(:pending_user)
      expect {
        get :activate, id: user.activation_token
        user.reload
      }.to change{user.activation_state}.from("pending").to("active")
    end 
  end 
end 

1 个答案:

答案 0 :(得分:0)

我认为这里令人困惑的是你如何触发激活与你如何验证它是否有效。

您通过控制器get :activate激活,然后通过模型user.activation_state进行验证。在这种情况下,reload是必需的,因为您必须从数据库重新加载属性才能看到activation_state已从挂起更改为活动。 get :activate对您的user实例没有影响。

为了更清楚你可以:

  1. 检查激活响应的页面上的激活结果或检查控制器实例变量(可能是@user)
  2. 改为从模型执行激活。我认为这可能是一个单元测试,而是调用一些user.activate(activation_token)方法。然后,检查user实例而不重新加载将起作用。