2011-07-20 6 views
6

başarısız olur. Denetleyicileri test edersem, hepsi yeşil geçer. Eğer tüm paketi (rspec spec ile) test edersem başarısız olurum - Kontrolör testlerini tamamen kaldırırsam, her şey yeşil olur. Şimdi bunun tamamen kendi kendine gerçekleşmesini bekliyorum ama bunu çözemiyorum. başarısız olmasına modeli özellikleri örnekler neden -Testi tüm RSpec paketi tüm örnekler yeşil bir birey RSpec modeli spec dosyası çalıştırırsanız sayede benim bütün Spec/modeller tüm örnekler yeşil klasörü sınamak eğer, garip bir durum var

ben kontrolör testlerinde belirli örneklere indirdim ettik. Örn.,

örn. Bir notes_controller_spec.rb bu çizgisi

Failure/Error: @account.all_notes.should have(2).notes 
ArgumentError: 
comparison of Note with Note failed 
./app/models/account.rb:293:in `sort' 

hat 293 olduğu account_spec.rb/benim modellerinde sorun yaratır

Note.any_instance.stubs(:valid?).returns(false) 

varsa;

(self.notes + self.transactions.map(&:notes).flatten).sort {|a,b| a.created_at <=> b.created_at } 

bu o yüz hurma anlarından birini olacak böylece bana karşı nazik olacak eminim! Tüm bloğun:

+0

sonra 'created_at' senin sıralama bloğu' Fixnum' karşı 'nil' karşılaştırarak olacaktır demektir Notlar biri için' nil' olabilir, bloğun 'nil' değerini döndürmesine sebep olacaktı, ki bu da 'ArgumentError' türünün göründüğü türden bir şeyle patlayacak.Bu satırın çalışması sırasında tüm örneklerin veritabanına kaydedildiğinden emin misiniz? Her örneklemden önce veritabanınızın boşaltılamaması mümkün mü? –

+0

Benzer bir sorun yaşıyorum. Düzeltildiğini iddia etse de, bu [bu rspec sorunu] ile ilgili olabileceğine inanıyorum (https://github.com/rspec/rspec-mocks/issues/54). –

+0

Üzgünüm, yanlışlıkla enter tuşuna basın, daha fazla ayrıntı: Modelin herhangi bir örneğinde bir yöntem saptayım - belirli bir sınama kümesinde denediğimden farklı bir model. Bu yöntemi gerektiren farklı bir test kümesi çalıştırdığımda, bulunamadı. Tek bir dosyadaki testlerde saplamayı çıkarmak diğer dosyayı geçer. Gerçekten sinir bozucu. Farklı rspec sürümlerini yüklemeyi deniyorum. –

cevap

1

Bir önceki herhangi bir tarih kurulumunu yapıyor musunuz? Bunlar işlemsel değildir ve test kirliliği sorunlarına neden olabilir.

Ayrıca, Sözdiziminizin kapalı burada olabileceğini düşünüyorum:

Note.any_instance.stubs(:valid?).returns(false) 

olmalı: Ben RSpec 3 ve Raylar 4.1 ile benzer sorunlar yaşadıysanız

Note.any_instance.stub(:valid?).and_return(false) 
0

. Ne zaman sorunlu spec dosyasını kendi başıma çalıştırdığımda, tüm paketi çalıştırırken başarısız olur.

Benim durumumda bir şekilde zaman dilimleri ilgiliydi. Açıkça ApplicationController'da saat dilimini ayarlıyordum ve bir sebepten özellik özelliklerinden hiç hoşlanmadı. Test ortamındayken saat dilimini ayarlamazsam, her şey tekrar geçer. Örneğin.

unless Rails.env.test? 
    Time.zone = "some timezone value here" 
end 
0

Benzer bir sorunla karşılaşıyordum: Bireysel model özellikleri geçti. Bütün model paketi çalışırken, yaklaşık 30 başarısızlık yaşadım. Yaptığım şey, tüm başarısızlıkların gerçekleşmesinden önce dosyaya bakıyordu. Orada iş parçacığı içinde bir şeyler ayarlıyordum ve bu railscast gibi default_scopes kullanarak buldum. Bir önceki madde için

ben Company.current_id baskılı. Düşündüğüm gibi, tek başına çalışırken, Company.current_id, nil idi. Süiti çalıştırırken, Company.current_id, 2 idi. Varsayılan kapsamları kullandığınızda böyle olur. Düzeltmek için, önceki maddede Company.current_id değerini nil olarak ayarlıyorum.

önce

describe Service, type: :model do 
    before do 
    end 
end 

describe Service, type: :model do 
    before do 
    Company.current_id = nil 
    end 
end