Ruby on rails RSpec测试未在工厂重新加载的情况下失败
在激活后强制重新加载用户对象之前,我一直很难通过一个规范测试。我是BDD和rails的新手,在这个例子中我是否完全滥用了factory girl?我应该嘲笑什么吗 作为参考,我正在使用魔法宝石进行用户激活Ruby on rails RSpec测试未在工厂重新加载的情况下失败,ruby-on-rails,ruby,rspec,Ruby On Rails,Ruby,Rspec,在激活后强制重新加载用户对象之前,我一直很难通过一个规范测试。我是BDD和rails的新手,在这个例子中我是否完全滥用了factory girl?我应该嘲笑什么吗 作为参考,我正在使用魔法宝石进行用户激活 describe "GET activate" do context "with valid attributes" do it "activates a new user" do user = FactoryGirl.create(:pending_user)
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
我认为这里让人困惑的是你是如何触发激活的,还是你如何试图验证它是否有效 您通过控制器
get:activate
激活,但随后通过型号user.activation\u state
进行验证<代码>重新加载在这种情况下是必要的,因为您必须从数据库重新加载属性,以便查看激活状态已从挂起更改为活动get:activate
对您的用户
实例没有影响
为了更清楚,您可以:
在激活响应页面上检查激活结果,或检查控制器实例变量(可能有@user)
改为从模型执行激活。我假设这可能是一个单元测试,它调用一些user.activate(activation\u token)
方法。然后,在不重新加载的情况下检查用户
实例将起作用
有道理。仍在努力理解rails中的所有内容应该放在哪里。谢谢你的帮助。