Rails 5 get users_path(10) 即使控制器中没有定义 "show" 方法,测试也不会失败
Rails 5 get users_path(10) test doesn't fail even no "show" method defined in controller
我收获了,是的。遇到一个奇怪的问题。此测试应该会失败,但事实并非如此。
仅使用 Rails 5 --api。
得到一个像这样的 UsersController:
class UsersController < ApplicationController
def index
users = User.all
render json: users
end
end
测试文件:
require 'test_helper'
class UsersControllerTest < ActionDispatch::IntegrationTest
test "users should return list of users" do
get users_path
assert_response :success
assert_not response.body.empty?
end
test "show valid id should return user json" do
get users_path(10)
assert_response :success
end
end
Routes.rb
定义如下:
Rails.application.routes.draw do
resources :cats
resources :users
end
控制台输出:
Running via Spring preloader in process 4176
Run options: --seed 28710
# Running:
........
Finished in 0.100764s, 79.3937 runs/s, 138.9390 assertions/s.
8 runs, 14 assertions, 0 failures, 0 errors, 0 skips
控制器明明没有定义show
方法,为什么测试不报错?
转到我的浏览器 localhost:3000/users/10 returns JSON 说 "show" 方法不存在。
有什么想法吗?
将测试中的users_path(10)
替换为user_path(10)
我收获了,是的。遇到一个奇怪的问题。此测试应该会失败,但事实并非如此。
仅使用 Rails 5 --api。
得到一个像这样的 UsersController:
class UsersController < ApplicationController
def index
users = User.all
render json: users
end
end
测试文件:
require 'test_helper'
class UsersControllerTest < ActionDispatch::IntegrationTest
test "users should return list of users" do
get users_path
assert_response :success
assert_not response.body.empty?
end
test "show valid id should return user json" do
get users_path(10)
assert_response :success
end
end
Routes.rb
定义如下:
Rails.application.routes.draw do
resources :cats
resources :users
end
控制台输出:
Running via Spring preloader in process 4176
Run options: --seed 28710
# Running:
........
Finished in 0.100764s, 79.3937 runs/s, 138.9390 assertions/s.
8 runs, 14 assertions, 0 failures, 0 errors, 0 skips
控制器明明没有定义show
方法,为什么测试不报错?
转到我的浏览器 localhost:3000/users/10 returns JSON 说 "show" 方法不存在。
有什么想法吗?
将测试中的users_path(10)
替换为user_path(10)