2010-12-20 14 views
1

私はいくつかの既存のレールテストをrspecに変換しましたが、今度はネームスペースにあるテストが失敗します。Rspecテストがネームスペースで失敗する

I.e. ChildrenController次のエラーで失敗しながら、以下の例では、AccountController仕様は、渡し:

in `load_missing_constant': Expected /.../app/controllers/admin/children_controller.rb to define Admin::ChildrenController (LoadError) 

アプリ/コントローラ/ account_controller.rb

class AccountController < ApplicationController 

スペック/コントローラ/ account_controller_spec.rb

require 'spec_helper' 

describe AccountController do 
    #... 
end 

app/controllers/admin/children_controller.rb

class Admin::ChildrenController < ApplicationController 

スペック/コントローラ/管理/ children_controller_spec.rb

require 'spec_helper' 

describe Admin::ChildrenController do 
    include ::ControllerHelper 
    #... 
end 

私は

  • ルビー-1.9.2-p0と
  • のRails 3.0.3
  • RSpecの2.3を使用しています。 0

私は名前空間の定義で試してみましたが、これまでのところ - どんなアイデアですか?

答えて

1

誰かがこの別の時間につまずいた場合の投稿の回答!最後に

私は次のようなスペックを平坦化することによってそれを固定:

app>controllers>admin>children_controller.rb 
class Admin::ChildrenController < ApplicationController 

spec>controllers>children_controller_spec.rb 
require 'spec_helper' 
describe Admin::ChildrenController do 
0

あなたが別のフォルダの下のコントローラを保つことができますが、 を使用する必要がありますが「+ File.dirname(FILE)が必要です/ ../../spec_helper」 だけではなく、必要の 『spec_helper』

3

別の解決策:

それが正常にロードされる文字列としてクラスを定義することによってを:

# children_controller_spec.rb 
require 'spec_helper' 
describe "Admin::ChildrenController" do 
    # -something- 
end 

これはスペック/コントローラ/ adminディレクトリで動作します

編集:2.10.x

3

でdoesntの仕事は、私は同じ問題を抱えていた、としてテストを置くことを望んでいないました下位ディレクトリ。私の場合、それは物事を台無しにしていたSporkでした。

正確には:

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
end 

先割れスプーンが実行されている場合、私はあなたがこの行を無視すべきである他、チェッカーを置きました。

Spork.each_run do 
    if /spork/i =~ $0 || RSpec.configuration.drb? 
    ActiveSupport::Dependencies.clear 
    end 
end 
+0

これは私にとっても正しい修正でした。 – rafamvc

+1

私はすべて最新であり、 'RSpec.configuration.drb? 'はsporkとrspec w/o spork経由で真に戻ってきます。 私はcache_classesのtest.rbと同じチェックを使用しています: 'if/spork/i =〜$ 0 || ENV ['DRB'] == '真' – databyte

2

私は同じ問題を抱えていたし、次の方法でそれを解決:前

:RSpecの実行

# app/controllers/admin/awards_controller.rb: 
class Admin::AwardsController < ApplicationController 

# spec/controllers/admin/awards_controller_spec.rb: 
require 'spec_helper' 

describe Admin::AwardsController do 

は私を与えた:

:後

/Users/andy/.rvm/gems/[email protected]/gems/activesupport-3.2.11/lib/active_support/dependencies.rb:503:in `load_missing_constant': Expected /Volumes/untitled/xxxx/app/controllers/admin/awards_controller.rb to define Admin::AwardsController (LoadError) 
(stacktrace...) 

# spec/controllers/admin/awards_controller_spec.rb: 
require 'spec_helper' 
load "#{Rails.root}/app/controllers/admin/awards_controller.rb" 

describe Admin::AwardsController do 
関連する問題