2009-07-16 33 views
20

Denetleyicim için bir rspec testi yazıyorum ve sorunu takip edemiyorum. Kenar durum testlerinden biri için bir örnek değişkeninin değerini doğrulamam gerekiyor. Erişimi tanımlamak zorunda kalmadan nasıl erişebilirim? Her zamanki Varsayılan olarak :RoR ve RSpec: Denetleyici örneği değişkenlerine erişimcileri tanımlamadan nasıl erişilir?

controller.variable.should == '3.15' 

çalışmaz.

değişken

sadece testler i daha inteligent yol olduğunu eminim aptalca olurdu geçmek ve yapmak:

attr_reader tanımlanması

.

cevap

43
controller.instance_variable_get(:var) 

bunu siz kendiniz bulursanız, size gerekli davranışı yerine arızi uygulama ayrıntılarına test ediyoruz, böylece gizleme bilgilere yaklaşımınızı yeniden düşünmek isteyebilirsiniz. Testleriniz, "şey" in, özel uygulamaya çok sıkı bağlı kalmadan gerektiği gibi çalıştığından emin olmalıdır.

DÜZENLEME: Denetleyicileriyle aynı şeyi yapmak için sihrini test eden raylar değil mi?

+0

Evet, muhtemelen haklısınız - eylemin sonuçlarını uygulama ayrıntıları yerine test etmeliyim. Yine de teşekkürler. –

+6

adil olmak için, kontrolörler için, örnek değişkenler test edilmesi gereken şeylerdir. Bu soruya kahve öncesi cevap verdim. –

+1

atar (: var) doğru – codecraig

İlgili konular