新手问题 关于 FactoryGirl 在 RSpec 中的调用问题

woody1983 · 2012年08月21日 · 最后由 lgn21st 回复于 2012年08月21日 · 2942 次阅读
describe "Profile page" do
  let(:demo_user) { FactoryGirl.create(:user) }
  before { visit user_path(demo_user) }
    it {should have_selector('h1', text: demo_user.name)}
    it {should have_selector('title', text: demo_user.name)}
end

before 那一句我不是太理解 FactoryGirl.create(:user)是直接拿 girl 里面定义的 user 信息去 create 了一个 user 信息吗?

{ visit user_path(demo_user) }参数是一个 id 吗?

FactoryGirl.define do
  factory :user do
    name     "Factory Girl"
    email    "[email protected]"
    password "foobar"
    password_confirmation "foobar"
  end
end
FactoryGirl.create(:user)

是通过 FactoryGirl 中定义的 user 信息取 create 一个 User 的对象实例。

{ visit user_path(demo_user) }

这里的参数是一个 User 的对象实例,不是 id,结果应该等同于下面

{ visit("/users/#{demo_user.id}") }

#1 楼 @lgn21st 感谢感谢~这个东西弄的昨天很是困扰,这次从头学习 rails 就是想把每一个地方就搞明白,而不是代码敲敲就算了。

是不是可以这样理解 { visit user_path(demo_user) } 意思就是 RESTful 中的GETuser_path(user) 进而触发show这个 Action 最后就像你上面所写的,等同于 /users/1or "/users/#{demo_user.id}"

需要 登录 后方可回复, 如果你还没有账号请 注册新账号