Ruby on rails 为什么创建操作上的控制器测试失败?
我这里的考试不及格,我很难理解。我正在使用Test::Unit,它应该具有增强功能。在users_controller.rb中的操作我正在尝试测试Ruby on rails 为什么创建操作上的控制器测试失败?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我这里的考试不及格,我很难理解。我正在使用Test::Unit,它应该具有增强功能。在users_controller.rb中的操作我正在尝试测试 def create unless params[:user][:email] =~ / specific regex needed for this app /i # ... render :template => 'sessions/new' end end 测试 context 'on CREATE to :
def create
unless params[:user][:email] =~ / specific regex needed for this app /i
# ...
render :template => 'sessions/new'
end
end
测试
context 'on CREATE to :user' do
context 'with invalid email' do
setup { post :create, { 'user[email]' => 'abc@abcd' } }
should_respond_with :success
end
# ...
end
失败,因为响应为,但为。302怎么样
将操作更改为
def create
render :template => 'sessions/new'
end
测试仍然失败。如果您使用的是默认的REST-ful URL,您可能应该使用PUT,而不是POST。。。由于PUT连接到create,因此发送到该URL会给您一个未经授权的重定向。@Ola:您错了:POST连接到create。PUT通常连接到更新 A:不过《禁地》很奇怪。这里有一些建议来找出我从未使用过的Shoulda的问题,但我认为这不是Shoulda的问题 确保在config/routes.rb中定义了路由,并检查rake路由 您是否有任何before_筛选器可能负责登录筛选器、acts_as_authenticated等行为。。?签出日志/test.log。过滤器链中出现了一个停顿。 打印响应body put response.body以查看返回的内容。
希望这有帮助。你确定吗?在Rails生成的POST/users{:controller=>users,:action=>create}中,我认为put是用于更新的。不过我试过了。同样的测试失败。PUT绝对用于更新,POST绝对用于创建