Upgrade to Pro — share decks privately, control downloads, hide ads and more …

FactoryGirlをFixturesで置き換えた話

y-yagi
December 17, 2014

 FactoryGirlをFixturesで置き換えた話

y-yagi

December 17, 2014
Tweet

More Decks by y-yagi

Other Decks in Programming

Transcript

  1. 7-reasons-why-im-sticking-with-minitest- and-fixtures-in-rails 1. Fixtures force you to test against “real”

    data 2. Rspec provides more than one way to do something 3. Setting up Capybara is trivial 4. Lack of complex stubbing/mocking constructs simplifies code 5. Snippets can help the uncertainty about Minitest assertion order 6. Minitest is just Ruby 7. Deviating from Rails defaults doesn’t always provide value
  2. Fixturesについて(1) "Fixtures are a way of organizing data that you

    want to test against; in short, sample data." YAMLファイル モデル毎に1ファイル 格納先は "/test/fixtures/" (ActiveSupport::TestCase.fixture_path で 変更可能) # web_sites.yml rubyonrails: id: 1 # IDは自動生成してくれるので、書かないでもOK name: Ruby on Rails url: http://www.rubyonrails.org google: id: 2 name: Google url: http://www.google.com
  3. Fixturesについて(3) erb記法が使える # tags.yml ruby: name: ruby created_at: <%= 3.days.ago

    %> <% 10.times do |i| %> tag_<%= i %>: name: tag<%= i %> <% end %> こんなんがいける
  4. Fixturesについて(5) アソシエーションはラベル名で定義出来る # authros.yml hyuki: name: 結城浩 matz: name: まつもとゆきひろ

    # tags.yml programming: name: プログラミング ruby: name: ruby # books.yml コードの未来: name: コードの未来 published_at: 2012­05­12 author: matz tags: programming, ruby 秘密の国のアリス: name: 秘密の国のアリス published_at: 2003­09­30 author: hyuki
  5. Fixturesについて(6) YAMLのマージ機能も使える "DEFAULTS"というラベルの値は無視される # stores.yml DEFAULTS: &DEFAULTS closed: false MIYAWAKI_GROUP:

    &MIYAWAKI_GROUP <<: *DEFAULTS group_id: 10 iwase: <<: *DEFAULTS name: 岩瀬書店 address: どこか miyawaki_honten: <<: *MIYAWAKI_GROUP name: 宮脇書店 本店 address: どこか2 上記例の場合、"DEFAULT"のデータは出来ない が、"MIYAWAKI_GROUP"のデータは出来てしまう
  6. Fixturesについて(7) ラベル名で値の定義が出来る matz: name: まつもとゆきひろ is $LABEL test: name: $LABEL

    nameが"test"というデータと、"まつもとゆきひろ is matz"というデータ が作成される
  7. 関連周りは? ラベル名で定義できるので、個人的にはむしろやりやすかった 名前重要 # authros.yml hyuki: name: 結城浩 matz: name:

    まつもとゆきひろ # books.yml コードの未来: name: コードの未来 price: 2800 published_at: 2012­05­12 author: matz tags: programming, ruby 秘密の国のアリス: name: 秘密の国のアリス price: 3240 published_at: 2003­09­30 author: hyuki