我无法让我的一个规范测试通过,直到我在激活后强制重新加载用户对象。我对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
答案 0 :(得分:0)
我认为这里令人困惑的是你如何触发激活与你如何验证它是否有效。
您通过控制器get :activate
激活,然后通过模型user.activation_state
进行验证。在这种情况下,reload
是必需的,因为您必须从数据库重新加载属性才能看到activation_state
已从挂起更改为活动。 get :activate
对您的user
实例没有影响。
为了更清楚你可以:
user.activate(activation_token)
方法。然后,检查user
实例而不重新加载将起作用。