2011-07-26 9 views
12

... paylaşılan edilmemelidir paylaştı. Bunu yaparsanız, rake spec (tüm özellikleri çalıştırmak için) çalıştırdığınızda, rspec paylaşılan bir örnek grubunun benzersiz olmayan bir adla bildirildiğinden şikayet eder. shared_examples_for çağrıları, bir açıklama bloğunda yer alsa bile bu gerçekleşir (örneklerin kapsamı içinde olması gerektiğini varsayar). İlk önce örnek grupların isimlerini değiştirerek (ideal değil, ama bununla yaşayabiliyorum) çalışmayı denedim.RSpec örnekler</p> <p>Eğer proje içinde herhangi bir yerde 2 RSpec paylaşılan örnek grupları için aynı adı kullanamazsınız görünüyor Bu sürpriz götürdü

Ancak bu, örnek grubunu ayrı bir dosyaya dahil etmek istediğimde, birden çok özellikli dosya arasında paylaşabilmem için bir sorun haline geldi.

İzolasyonda çalışırken özelliklerin iyi çalıştığından, ancak paketi çalıştırdığımda rspec şikayet ediyor.

`ensure_shared_example_group_name_not_taken': \ 
Shared example group 'a person' already exists (ArgumentError) 

Elbette bu yaygın bir sorundur.

Burada eksik olduğum bir şey var mı?

cevap

11

rspec 2.6'dan itibaren paylaşılan örnekler geneldir. Bunları örnek bir grupta bildirebilirsiniz, ancak bu gruba kapsamı yoktur. ;

Evet, paylaşılan örnekler geneldir DR

https://www.relishapp.com/rspec/rspec-core/docs/example-groups/shared-examples

TL:

+0

Teşekkürler David. Paylaşılan örnekleri birden fazla spec dosyasında nasıl kullanacağınız konusunda herhangi bir öneriniz var mı? 'Description' bloğu dışında 'shared_examples_for' ifadesinin 'rake' nin başarısız olmasına neden olduğu görünüyor. –

+0

Üzgünüm. Bu doğru değil. Onu 'anlatımda' sardığımda bile başarısız olur. Görünüşe göre başka bir dosya gerektiren bir şey. –

+4

Amaç, bunları bir dosyada tanımlamak ve bunları n diğer dosyalarda kullanmaktır; bu nedenle, farklı bir dosyada varsa, kesinlikle çalışmalıdır. Sözleşme, bunları bir spec/support (örneğin, spec/support/shared_examples_for_xyz.rb) altındaki bir dosyada tutmak ve bu dosyaları spec/spec_helper.rb dosyasından gerektirir. –

2

bazı en iyi bu nasıl ele alınacağı üzerinde resmi belgelerinde ipuçları vardır. Ruby On Rails için en iyi uygulama: Paylaşılan örnekleri spec/support/foo_bar_shared_examples.rb içine yerleştirin ve describe bloğuna veya başka bir şekilde sarmadan, shared_example düz yazmaya başlayın.