我已经完成了 Hartl 的 Rails 教程中的第 9 章练习。我已经尝试了很长时间,但无法破解问题 6:
登录用户没有理由访问控制器中的
new
和create
操作。Users
如果他们确实尝试访问这些页面,请安排将此类用户重定向到根 URL。
首先,我应该把这些测试放在哪里?目前我正在尝试,user_pages_spec.rb
但我不确定这是否正确。然后我应该把逻辑本身放在哪里?
其次,这是我的测试应该是什么样子:
describe "after signing-in" do
before { sign_in(user) }
describe "creating a new user" do
before { put new_user_path }
specify { response.should redirect_to(root_url) }
end
end
在我执行上述操作的那一刻,RSpec 告诉我
预期的响应是重定向到 http://www.example.com/signin。
但是当我在浏览器中测试它时,http://localhost:3000/users/new
使用登录用户访问时,根本没有重定向(这对我来说更有意义,因为我没有编码)。
我什至从 github 下载了 Hartl 的代码,但我看不到他在哪里/是否包含此功能。
编辑: 我都有
describe "creating a new user" do
before { visit new_user_path }
it { should_not have_selector 'title', text: full_title('Sign Up') }
end
和
describe "creating a new user" do
before { get new_user_path } # note the use of GET here not PUT
specify { response.should redirect_to(root_url) }
end
正常工作。感谢@Peter de Ridder 的帮助