2012-10-18 18 views
11

Basit görünüyor, ancak bunu nasıl çalıştıracağını anlayamadık. model.rb olarakFactoryGirl, başlangıç ​​yönteminde bir karma alan bir modelle nasıl kullanılır?

: fabrika dosyasında models.rb yılında

def Model 
    attr_accessor :width, 
       :height 

    def initialize params 
    @width = params[:width] 
    @height = params[:height] 
    ... 

: fabrika yönteminde özelliklerini ayarlama

FactoryGirl.define do 
    factory :model do 
    height 5 
    width 7 
    end 
end 

wrong number of arguments (0 for 1) olmadan Ruby 1.9.3 çalışmak bir hatayı atar Raylar, Factory.build kullanarak. FactoryGirl 4.1.

DÜZENLEME: Daha çok bilgi: RSpec kullanarak

: let(:model) { FactoryGirl.build :model }

+0

Bu, standart bir FactoryGirl tanımına benziyor. Factory.build'yi nasıl çağırıyorsunuz? Herhangi bir 'after_build 'veya' after_create 'kancaları dahil olmak üzere fabrika tanımınızın tüm içeriğini gönderir misiniz? –

+0

Tamam, tamam. Bilgi eklendi. –

cevap

29

Bu Sınıfınızla çalışması gerekir:

FactoryGirl.define do 

    factory :model do 
    skip_create 

    width 5 
    height 9 

    initialize_with { new(attributes) } 
    end 
end 

- skip_create normalde yeni nesneler üzerinde adlı varsayılan save! eylemi atlar.

-attributes yöntemi initialize_with kullanarak new yöntemine geçebileceğiniz bir karma üretir.

+0

Bu, boş bir hashta geçer. initialize_with {{height: 5, width: 6}} ', uygun hashta geçer, ancak fabrika model nesnesinin yerine hash değerini döndürür. –

+0

Haklısınız; Bir gözardı bloğu olmamalı. Şimdi kaldırılıyor. –

+0

Çalışıyor. Teşekkür ederim! –

İlgili konular