【发布时间】:2014-07-06 03:20:07
【问题描述】:
我已经开始为新控制器编写规范。按理说,这个控制器的动作不应该是可路由的。我还没有为它写一条路线。然而,rspec 以某种方式设法路由到该操作并运行它。
我很困惑。
这是一个规范和控制台输出,表明这不应该是可路由的:
it 'accepts POSTs to receiver' do
{ post: "http://api.customersure.com/webhooks/foobar/receiver" }.should route_to(controller: 'webhooks/foobar', action: 'receiver')
end
这失败了,它应该失败,因为我没有添加那条路线。
但是,这个控制器规范通过了:
describe Webhooks::FoobarController, type: :controller do
describe "POST receiver" do
it "returns 200 OK" do
post :receiver
expect(response.status).to eq(200)
end
end
end
我通过在动作中插入puts 快速验证了它肯定会路由到Foobar 控制器中的#receiver 动作。当我运行测试时,来自 puts 的字符串出现在我的控制台中。
那么……
- 对我最有帮助 - 谁能解释一下 rspec 是如何设法路由到此操作的?
- 一般来说,我该如何调试呢?我怎样才能从一个动作向后推算出遵循了哪些路线?
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby rspec url-routing