2014-06-21 27 views
6

ile herhangi bir veritabanı kullanma Herhangi bir önkoşul olmadan herhangi birinin FactoryGirl'i kullanıp kullanamayacağını bilip bilmediğini merak ediyordum.Radarsız FactoryGirl, ActiveRecord veya RSpec

Hem mobil hem de web ve hatta API için UI otomasyon testlerini sürerken, anında test verileri oluşturmak için bunu kullanmak istiyorum.

Bazı özel yardımcı sınıfları/yöntemleri oluşturabileceğimi ve getters ve setters vb. Kullanabileceğimi biliyorum, ancak bu harika küçük gemiyi kullanmanın iyi olacağını düşündüm.

Oldukça kapsamlı bir araştırma yaptım ve temel bir RSpec projesi kurmaya çalıştım (Salatalık da denedim), ama boşuna. Hala tüketmek için ilgili giriş ile örneklenecek sınıflara ihtiyacım var gibi görünüyor. Sonra

FactoryGirl.define do 
    factory :user do 
    firstname { Faker::Name.first_name } 
    lastname { Faker::Name.last_name } 
    age { 1 + rand(100) } 
    end 
end 

Bir RSpec dosyasında aramak çalışırsanız ...

describe... 
    it... 
    user = build_stubbed(:user) 
    end 
end 

Ben de, ben sadece ...

almaya devam tüm diğer varyantları dokümanlar okuyup çalıştılar Tüm mantıkla Kullanıcı adı verilen bir sınıfa ihtiyaç duyduğumu öneren
Failure/Error: user = build_stubbed(:user) 
NameError: 
    uninitialized constant User 

.

cevap

5

Durumunuz doğru - hala User sınıfını kendiniz yazmanız gerekiyor. factory_girl, ActiveRecord olmayan sınıflarla iyi çalışır, ancak bunları sizin için yazmaz.

Varsayılan olarak, factory_girl hiçbir parametre olmadan new numaralı telefonu arayarak örnekleri oluşturur; böylece sınıfınız ya def initialize ya da initialize bir ActiveRecord modeli gibi parametreler almamalıdır. en kolay şey şöyle User yazma olacağını Yani:

class User 
    attr_accessor :firstname, :lastname, :age 
end 

Eğer karar verirseniz parametreleri gerektiren bir initialize, you can use factory_girl's initialize_with to tell it how to instantiate your class gerekir.

+0

Şüphelendiğim şey, cevabın için çok teşekkürler! – sherbert

+0

Aynı zamanda [struct 'kullanarak] (https://ruby-doc.org/core-2.2.0/Struct.html) şunu da göz önünde bulundurun: 'Kullanıcı = Struct.new: ad, soyadı,: yaş'. İyi bir açıklama [burada] (http://blog.steveklabnik.com/posts/2012-09-01-random-ruby-tricks--struct-new). – Giuse