我正在尝试这样做:
我的测试如下:
describe "User pages" do
subject { page }
describe "edit" do
let(:user) { FactoryGirl.create(:user) }
before do
log_in user
#visit edit_user_path(user) <-- did not work
end
describe "page" do
it "should render edit page" do
get :edit, :id => user.id
should have_selector('h1', text: "Update")
should have_selector('h2', text: user.username)
should have_selector('title', text: "Edit user")
end
end
describe "with invalid information" do
before { click_button "Save changes" }
it { should have_content('error') }
end
端
我尝试添加get :edit, :id => user.id
,但它会引发异常:
Failure/Error: get :edit, :id => user.id
ArgumentError:
bad argument (expected URI object or URI string)
还有其他我想念的东西吗?
答案 0 :(得分:1)
1)确保您的测试文件包含如下块:
describe UsersController do
# your tests here
end
2)尝试重写像这样的
it "should render edit page" do
get :edit, :id => user.to_param
should have_selector('h1', text: "Update")
# ...
end
答案 1 :(得分:0)
试试这个
describe "page" do
it "should render edit page" do
p = FactoryGirl.create(:user)
get :edit, :id => p.id
should have_selector('h1', text: "Update")
should have_selector('h2', text: user.username)
should have_selector('title', text: "Edit user")
end
end
答案 2 :(得分:0)
我最终这样做了:
visit edit_user_path(user.id)
我不确定阅读有关事情的方法,但首选哪种方法(get vs visit)。