Soru RSpec denetleyici testi - boş yanıt.


Denetleyicileri RSpec ile test ederken bir sorunla takıldım - response.body çağrısı her zaman boş bir dize döndürüyor. Tarayıcıda her şey doğru bir şekilde işlenir ve salatalık özellik testlerinin doğru olduğu anlaşılır, ancak RSpec her seferinde başarısız olur.

Yanıt nesnesindeki diğer beklentiler, örneğin response.should render_template('index') herhangi bir sorun olmadan geçmek.

Bu problemle daha önce hiç karşılaştınız mı? Belki de yanıt html başka bir şekilde elde edilebilir?

Sürümlerde olduğu gibi, Rails 2.1.0, RSpec 1.2.7.


89
2018-06-30 11:00


Menşei




Cevaplar:


Varsayılan olarak, rspec rayları Rails'e önlemek aslında görünüm şablonlarını oluşturuyor. Yalnızca eylemlerinizin davranışını test etmeli ve şablon oluşturma işleminin sonucunu değil, denetleyici testlerinizi filtrelemeniz gerekir.

Bununla birlikte, kontrol cihazınızın özelliklerinin normalde uygulama olarak şablonlar oluşturmasını isterseniz, render_views direktif:

describe YourController do
  render_views
  ...
end

169
2018-06-30 18:54



Teşekkür ederim, tam ihtiyacım olan şey. - Toms Mikoss
Yıllardır Rails ile çalışıyorum ve şimdi denetleyici ile istek özellikleri arasındaki farkı anladım. Teşekkürler! - Brian Underwood


Benzer bir problemle çalıştığım için (bu soruya beni yönlendirdi), aynı kediyi cildin farklı şekilleri olduğu ortaya çıktı. Başka bir deyişle, gövde metnini kontrol etmek yerine, flaşın içeriğini kontrol edebilirsiniz.

response.body.should =~ /Invalid email or password/

eşdeğer bir kontrol olabilir:

flash[:alert].should == "Invalid email or password"

Bana göre ikincisi her iki şekilde de çalışacağından biraz daha esnek görünüyor, ancak her durumda uygun olmayabilir.

Alkış,

John


2
2017-09-13 18:20





RSpec 2+: Eğer uçtan uca kontrol etmek istiyorsanız - url'ye yanıt verin - talep isteği yerine denetleyici özelliği.


2
2017-07-09 06:55





Varsayılan olarak, RSpec rayları yapılandırması denetleyici özellikleri için şablonların oluşturulmasını devre dışı bırakır.

Bunu düzeltmenin yollarından biri, render_views içinde ayar rails_helper.rb dosya. Bu sayede tüm testlerde global olarak çalışabilirsiniz.

RSpec.configure do |config|
  config.render_views
end

Veya render_views beyanını bireysel bir grupta kullanın:

describe User do
  render_views
end

Bu konuda daha fazla bilgi edinebilirsiniz İşte.


1
2018-03-01 13:44