【发布时间】:2011-08-23 16:05:44
【问题描述】:
我有一个旧的 pre-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
运行这个测试让我明白:
未初始化的常量 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: TestController:Class 的未定义局部变量或方法“_routes”
我错过了什么?我的测试助手需要:
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'
想法?谢谢!
【问题讨论】:
标签: ruby ruby-on-rails-3 testing routes ruby-on-rails-plugins