我想在规范中断言 404
I want to assert for 404 in spec
我想测试重定向到自定义 404、500 错误页面的应用。我在 test.rb 文件中打开 config.consider_all_requests_local = false 来检查错误页面。
现在一切正常,如果路径存在于 rake 路由中,我可以填写字段并使用 capybara 进行断言,例如:
visit signin_path
问题是如果我给了一个错误的路径,比如
visit signin_path + '/xyz' #xyz is incorrent
或
visit ('/wrongpage')
为了检查重定向到我的自定义错误页面,测试用例给出了一个异常并且没有继续执行 expect 语句。这是错误:
Failure/Error: visit ('/wrongpage')
ActionController::RoutingError:
No route matches [GET] "/wrongpage"
#then stack trace is printed here
我也试过检查
expect(page).to raise_error(ActiveRecord::RecordNotFound)
当我尝试获取带有无效 id 的记录时(比如 id = 'xyz' 而不是整数,这会产生 500 错误),这里出现同样的问题,执行停止并且不会继续执行期望语句。
我也尝试在互联网上寻找答案,但没有得到我想要的东西,这 () 很接近,但对于
visit page_path
给出以下错误:
Failure/Error: visit page_path('wrongpage')
NoMethodError:
undefined method `page_path' for ....
Rails 默认情况下期望在 config/routes.rb
中定义所有路由
如果您想将所有未知路由重定向到某个已知端点,您可以在路由文件底部添加如下一行:
get '*path', to: 'home#index' #or whatever your default root path might be
应该没有必要测试 404 错误,因为如果没有找到您的路由,Rails 将引发异常,除非您按上述方式处理它。
Rails.application.config.action_dispatch.show_exceptions
这就是问题所在!
它的值应该设置为true
可以通过两种方式完成,或者在 test.rb 文件中将其设置为:
# Raise exceptions instead of rendering exception templates
config.action_dispatch.show_exceptions = true
或
before(:all) do
Rails.application.config.action_dispatch.show_exceptions = true
end
此外,不要忘记检查:config.consider_all_requests_local = false,以显示您的自定义错误页面(在您当前的环境中)。
我想测试重定向到自定义 404、500 错误页面的应用。我在 test.rb 文件中打开 config.consider_all_requests_local = false 来检查错误页面。 现在一切正常,如果路径存在于 rake 路由中,我可以填写字段并使用 capybara 进行断言,例如:
visit signin_path
问题是如果我给了一个错误的路径,比如
visit signin_path + '/xyz' #xyz is incorrent
或
visit ('/wrongpage')
为了检查重定向到我的自定义错误页面,测试用例给出了一个异常并且没有继续执行 expect 语句。这是错误:
Failure/Error: visit ('/wrongpage')
ActionController::RoutingError:
No route matches [GET] "/wrongpage"
#then stack trace is printed here
我也试过检查
expect(page).to raise_error(ActiveRecord::RecordNotFound)
当我尝试获取带有无效 id 的记录时(比如 id = 'xyz' 而不是整数,这会产生 500 错误),这里出现同样的问题,执行停止并且不会继续执行期望语句。
我也尝试在互联网上寻找答案,但没有得到我想要的东西,这 () 很接近,但对于
visit page_path
给出以下错误:
Failure/Error: visit page_path('wrongpage')
NoMethodError:
undefined method `page_path' for ....
Rails 默认情况下期望在 config/routes.rb
如果您想将所有未知路由重定向到某个已知端点,您可以在路由文件底部添加如下一行:
get '*path', to: 'home#index' #or whatever your default root path might be
应该没有必要测试 404 错误,因为如果没有找到您的路由,Rails 将引发异常,除非您按上述方式处理它。
Rails.application.config.action_dispatch.show_exceptions
这就是问题所在!
它的值应该设置为true
可以通过两种方式完成,或者在 test.rb 文件中将其设置为:
# Raise exceptions instead of rendering exception templates
config.action_dispatch.show_exceptions = true
或
before(:all) do
Rails.application.config.action_dispatch.show_exceptions = true
end
此外,不要忘记检查:config.consider_all_requests_local = false,以显示您的自定义错误页面(在您当前的环境中)。