1

これは、「モジュール内の定数を参照するときの一貫性のない動作」と同様の問題である可能性があります。 」ですが、よくわかりません。

テストは機能するのにアプリが失敗する状況にあり、アプリを修正することはできますが、アプリが機能する場合は失敗するテストが必要です!

基本的なセットアップは次のとおりです。

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とにかく、実際にはそれがより明確な方法なので、私はそれを喜んで行います. しかし、これに対して失敗するテストをどのように作成すればよいでしょうか?

4

1 に答える 1