2009-12-11 11 views
7

Bu yüzden, bir Sinatra uygulaması için rspec'te bir denetleyici yönteminin bir yöntemini saptamanın bir yolunu bulmaya çalışıyorum. Bunun ana nedeni, uygulamanın mantıksal akışını test etmek ve belirli koşullar sağlandığında gerekli işlevleri çağırdığından emin olmaktır. Yani, özünde, ben zorluk sinatra uygulama içindeki kontrolör örneğini erişen yapıyor yaşıyorum neBir denetleyici yöntemini Sinatra ve rspec ile sorgulama

controller.should_receive(:fancy_method).and_return("This is a string") 

gibi bir şey yapabilmek istiyorum. Sinatra denetleyici sınıfında bir class_eval kullanarak mevcut işlevleri geçersiz kılabiliyorum, ancak bu işlevlerin gerçekten çalıştığını iddia etmeyi çok isterim.

Herhangi bir tavsiyesi olan var mı?

Teşekkürler.

cevap

3

Dan, gerçekten istediğiniz şeyin kontrolör eylemlerini test etmek olduğuna inanıyorum. Bir testçinin bakış açısıyla, gerçekten ne denir, aslında çıktı için değil, belirli bir girdi ve belki de diğer bazı özel koşullar (diğer sınıflar ile alay veya diğer sınıflar arasındadır) gözetilmemelidir (1).

official documentation for Sinatra + Rack::Test veya this blog post from devver.net'u kontrol edebilirsiniz.

(1): Eğer denetleyici sayfalarınız başka sınıflar (model, servis vb.) Çağırıyorsa, bunlarla dalga geçebilir ve bunlara beklentilerinizi koyabilirsiniz. Örneğin:

SomeClass.should_receive(:msg).with(:arg).and_return(:special_value) 

(bu xmaple içinde RSpec ile) alay için bazı daha fazla bilgi RSpec documentation pages bulunabilir.