自从将一些代码移到我的 Rails 代码中的 Rack 应用程序后,我一直遇到 Controller 规范的问题。这些路由在作为服务器运行时完美运行,而不是通过 Rspec。
这是我的路线定义:
match ':username', to: Rack::CatchAllRouter.new, constraints: { format: 'html' }, via: [:get, :put, :patch]
以下代码是我的 Controller 规范:
describe UsersController do
describe "#show" do
subject { get :show, username: 'test-user' }
it { is_expected.to be_successful }
it { is_expected.to render_template('users/show') }
end
end
我收到的错误如下:
No route matches {:action=>"show", :controller=>"users", :username=>"test-user"}
我不明白为什么这必须通过路由器,因为这应该只测试 Controller 而不是通过整个请求设置。
我也可以通过请求规范和构建 URL 来实现它,而不是 Controller 规范。
我是一名优秀的程序员,十分优秀!