3

mongoid で新しい Rails アプリを作成すると、次のようになります。

rails new tddapp --skip-active-record
cd tddapp
echo "gem 'mongoid'" >> Gemfile
bundle
rails g mongoid:config

次に、単純な足場を生成します。

rails g scaffold building height:Integer name:String

スキャフォールディングが作成され、最小限のアプリが問題なく動作します。しかし、足場で生成されたテストは次のように失敗します。

NoMethodError: undefined method `buildings' for #<BuildingsControllerTest:0x007fa6afbf78d8>

問題のある行は、テスト コントローラーがフィクスチャを見つけられないことを示しています。

@building = buildings(:one)

mongoid ジェネレーターはtest/fixtures/buildings.yml、足場の機能テストの全体的なアイデアとのある程度の協力を示すフィクスチャを作成するのに十分でした。

機能テストで mongoid のフィクスチャをロードするために、構成設定または変更する必要があるものはありますか? それとも、足場の機能テストはモンゴイドで失敗すると予想されますか? (もしそうなら、なぜ mongoid はわざわざフィクスチャ ファイルを作成するのでしょうか?)

4

3 に答える 3

3

個人的な宣伝のためではありませんが、この問題に何度か行き詰まり、他の多くの人に役立つかもしれないと考えたので、 を作成しましたmongoid-fixture_set。これはgithubで入手できます。

ActiveRecord::FixtureSet多くのコードを移植したため、テストクラスに自分で結び付けるだけで済みます。

class ActiveSupport::TestCase
  include Mongoid::FixtureSet::TestHelper
  self.fixture_path = "#{Rails.root}/test/fixtures"
end

'lib/rails/test_help.rb'ActiveRecordの gem の rails によって同じことが行われます。railties

于 2015-01-05T11:18:28.043 に答える
1

Mongoidは、箱から出してすぐに使用できるフィクスチャ(ソース)をサポートしていません。備品を捨てて工場のルートに行くことをお勧めします。factory_girlは優れたオプションです。

于 2013-03-21T02:21:01.533 に答える
0

ええ、それはフィクスチャが ActiveRecord の一部であり、あなたが持っていないことだと思います (" rails new tddapp --skip-active-record")。

ただし、 FactoryGirlへの移行は非常に簡単です。ただし、すぐに使用できるようになっていないのは残念です。

于 2014-05-23T21:50:01.800 に答える