我有一箇舊預Rails 3的插件,其測試下的Rails 3將不再運行測試看起來是這樣的:什麼是嘲笑Rails 3條的路線和控制器插件測試的正確方法?
class TestController < ActionController::Base
def test_action; render :nothing => true; end
end
TestController.view_paths = [File.dirname(__FILE__)]
ActionController::Routing::Routes.draw {|m| m.connect ':controller/:action/:id' }
class TestControllerTest < ActionController::TestCase
context "test_action" do
should "do something" do
lambda { post :test_action }.should change { Model.count }
end
end
end
運行這個測試使我:
uninitialized constant ActionDispatch::Routing::Routes (NameError)
當我使用with_routing,我認爲在做測試路由的新方法,就像這樣:
should "do something" do
with_routing do |set|
set.draw { |m| m.connect ':controller/:action/:id' }
lambda { post :test_action }.should change { Model.count }
end
end
我得到:
NameError: undefined local variable or method `_routes' for TestController:Class
我錯過了什麼?我的測試助手要求:
require 'rubygems'
require 'active_record'
require 'active_record/version'
require 'active_record/fixtures'
require 'action_controller'
require 'action_dispatch'
require 'action_view'
require 'test/unit'
require 'shoulda'
require 'mocha'
想法?謝謝!
東西記錄:這種方法將重寫所有應用程序的路線。所以要小心! – 2013-06-16 12:20:39