测试输出:
Failures:
1) AccountsController account signs up
Failure/Error: post :create, account_id: account.id
ActionController::RoutingError:
No route matches {:account_id=>"1", :controller=>"accounts", :action=>"create"}
# ./spec/controllers/accounts_controller_spec.rb:24:in `block (4 levels) in <top (required)>'
routes.rb中:
post 'sign_up', to: 'accounts#create'
规格:
RSpec.describe AccountsController, type: :controller do
...
it '' do
post :create, account_id: account.id
...
end
我有一个指向我的create方法的自定义路由。我不想在路上。我有一个有效的路线测试。现在我想测试create方法中的逻辑。
如何使用自定义路线测试create
方法?
我尝试过做post 'my_custom_route'
,但是没有用。
Rails:3.2
Rspec:3
编辑:我刚用account.id
作为示例。它不是我实际代码中的真实参数。
答案 0 :(得分:0)
您应该使用:id
,而不是:account_id
post :create, id: account.id
答案 1 :(得分:0)
如何使用自定义路径测试create方法?
你不能,至少不能在控制器规范中。
控制器的单元测试旨在测试动作的主体,而不是路线。因此,您始终需要指定操作 - 在这种情况下,调度程序不会为您解析路径。
您可以编写routing spec来验证自定义路由是否按预期工作。或者,您可以编写一个匹配所需网址的feature spec。