shoulda-matchers ve RSpec'in yeni expect syntax'u kullanmak için doğru biçim nedir?shoulda-matchers RSpec bekliyoruz sözdizimi
cevap
şöyle bir kesinlikle yeni beklemek söz dizimi ile gerekirdi-matchers kullanabilirsiniz iken:
it 'should validate presence of :email' do
expect(subject).to validate_presence_of :email
end
veya daha fazla özlü ama daha az okunabilir: Bu
it { expect(subject).to validate_presence_of :email }
tek satırlık should
formatını Genellikle kullanılan eşleştiriciler, config.syntax == :expect
olduğunda bile 2.14'te açıkça desteklenir. should
gibi bir örtülü konu ile kullanılırken:
describe User
it { should validate_presence_of :email }
end
bu should
aksi bağlıdır Kernel
maymun yama dayanmaz.
Bu, https://github.com/rspec/rspec-expectations/blob/master/Should.md kapsamındadır. Aslında, bu dokümantasyon bu istisnayı göstermek için yukarıdaki shoulda
eşleştirici örneğini kullanır.
Ayrıca, it
seçeneğine alternatif olarak kullanmanıza izin veren bir yapılandırma seçeneğini ele alan Using implicit `subject` with `expect` in RSpec-2.11'a da bakın.
expect_it { to validate_presence_of :email }
Güncelleme: RSpec 3.0 (beta2) itibariyle de kullanmak mümkün olacak:
it { is_expected.to validate_presence_of :email }
İlk blok da 'Kullanıcıyı Tanımla' ile çevrelenir, değil mi? 3 satırdan 3 farklı çizgiye benzediği için, ama tam olarak değil. Öyleyse ilk kod bloğunda netlik için bunu eklemek isteyebilir. –
@MichaelDurrant Evet, öyle olurdu. Kabul. Bunu işaretlediğiniz için teşekkürler. Cevap güncellendi. –
Downvote'un ne anlama geldiği hakkında bir fikri olan var mı? Bu "esas olarak fikir temelli" olmak için yakın oylarla mı ilgili? –
Ben @ peter-alfvin cevabını suplement edeceğiz. Eğer siz it
bloğunun dışında :expect
kullanamaz modeli ve shoulda-matchers
ile göç kendilerini test, bu yüzden yazamıyorum:
RSpec.describe ModelName, type: :model do
expect(subject).to belong_to(:user)
end
Ve expection alacak:
`expect` is not available on an example group (e.g. a `describe` or `context` block).
ancak doğru sürümü:
RSpec.describe ModelName, type: :model do
it { expect(subject).to belong_to(:user) }
end
Üzgünüm İlişkin gerekirdi – trev9065
geliyordu oy kapatılan tabanlı dayalı bu varlık öncelikle görüşüne ben wou Bir şeyin "iyi bir fikir" olup olmadığını sormanın bu özel örneğinin bir istisna olduğunu öne sürüyorum çünkü endişenin konu dışı olduğu gerçeğine dayalı bir açıklama var. –
, SO için uygun olmasını sağlamak için sorgu detayını düzenledi. –