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

woody1983 · August 21, 2012 · Last by lgn21st replied at August 21, 2012 · 2942 hits
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}"

You need to Sign in before reply, if you don't have an account, please Sign up first.