在控制器中使用参数测试路由
testing route with parameter in controller
我正在使用 rspec 来测试我的应用程序
我有一条 id 像这样的路线
match 'promotevuln/moderate/:id' => 'moderate#promotevuln'
这是我用来测试的代码
RSpec.describe ModerateController, :type => :controller do
describe '#promotevuln' do
context 'access controle' do
before :each do
@vuln=NewVulnerability.new(:description=>'description',:description_eng=>'description',:title=>'title',:title_eng=>'title_eng',:short_description=>'short',:short_description_eng=>'short')
end
it 'must be connected' do
get :promotevuln,{:id=>@vuln.id}
expect(response).to redirect_to(:controller => 'account', :action => 'login')
end
但我无法通过此条件,它总是 returns 此错误消息
Failure/Error: get :promotevuln,{:id=>@vuln.id}
ActionController::RoutingError:
No route matches {:controller=>"moderate", :action=>"promotevuln"}
您正在实例化一个新的 NewVulnerability 但您并未将其持久保存到数据库中,因此其 id
为 nil
。
我正在使用 rspec 来测试我的应用程序 我有一条 id 像这样的路线
match 'promotevuln/moderate/:id' => 'moderate#promotevuln'
这是我用来测试的代码
RSpec.describe ModerateController, :type => :controller do
describe '#promotevuln' do
context 'access controle' do
before :each do
@vuln=NewVulnerability.new(:description=>'description',:description_eng=>'description',:title=>'title',:title_eng=>'title_eng',:short_description=>'short',:short_description_eng=>'short')
end
it 'must be connected' do
get :promotevuln,{:id=>@vuln.id}
expect(response).to redirect_to(:controller => 'account', :action => 'login')
end
但我无法通过此条件,它总是 returns 此错误消息
Failure/Error: get :promotevuln,{:id=>@vuln.id}
ActionController::RoutingError:
No route matches {:controller=>"moderate", :action=>"promotevuln"}
您正在实例化一个新的 NewVulnerability 但您并未将其持久保存到数据库中,因此其 id
为 nil
。