2011-05-11 59 views
2

我有一箇舊預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' 

想法?謝謝!

回答

0

你只需要利用Rails.application

路線
Rails.application.routes.draw do 
    # Fun times 
end 
+0

東西記錄:這種方法將重寫所有應用程序的路線。所以要小心! – 2013-06-16 12:20:39

相關問題