これは、「モジュール内の定数を参照するときの一貫性のない動作」と同様の問題である可能性があります。 」ですが、よくわかりません。
テストは機能するのにアプリが失敗する状況にあり、アプリを修正することはできますが、アプリが機能する場合は失敗するテストが必要です!
基本的なセットアップは次のとおりです。
admin_controller.rb (ApplicationController と同様、他のコントローラーは継承)
class AdminController < ActionController::Base
# If a session_grouping is set, it should be used until unset.
def session_grouping
session[:default_grouping] || DraftGrouping.new
end
...
end
admin_controller_test.rb
require 'test_helper'
class AdminControllerTest < ActionController::TestCase
def test_get_session_grouping
assert_equal DraftGrouping, @controller.session_grouping.class, 'without a grouping set, a draft grouping should be returned'
end
...
end
このテスト (および明確にするために除外した他のテスト) はすべてDraftGrouping
、次のように定義された場合に合格します。
grouping.rb
class Grouping < ActiveRecord::Base
...
end
# Used as a stand-in for a real grouping until there is something to save.
class DraftGrouping
# Any call to real_grouping instantiates the grouping in the database.
def real_grouping
@real_grouping || @real_grouping = Grouping.create!
end
...
end
ただし、アプリケーションで使用すると、メッセージsession_grouping'`でAdminController#session_grouping
失敗しますNameError (uninitialized constant AdminController::DraftGrouping): app/controllers/admin_controller.rb:5:in
DraftGrouping
内部を定義してどこでもGrouping
呼び出すことで、これらすべてを修正できます。Grouping::DraftGrouping
とにかく、実際にはそれがより明確な方法なので、私はそれを喜んで行います. しかし、これに対して失敗するテストをどのように作成すればよいでしょうか?