Saya ingin menggunakan kembali beberapa langkah Ketimun tetapi sepertinya tidak dapat menemukan cara yang benar.
Saya ingin menulis langkah seperti:
Given /^I login with (.*) credentials$/ |type|
# do stuff with type being one of "invalid" or "valid"
end
Tapi kemudian lakukan langkah lain seperti:
Given /^I login successfully$
# call "Given I login with valid credentials"
end
Jadi dalam pengujian otentikasi pengguna saya dapat menggunakan yang pertama, tetapi di sebagian besar tempat lain, saya dapat menggunakan yang terakhir, dan sebenarnya tidak harus merepro kode.
Apakah ada cara untuk memanggil langkah lain itu, atau apakah saya hanya meletakkan logika dalam metode pembantu, dan memanggil metode tersebut dari setiap tugas (pada dasarnya metode ekstraksi refactoring, yang, setelah membaca pertanyaan saya membuat saya percaya bahwa itu sebenarnya cara terbaik bagaimanapun)?
do
perlu menjalankando...end
blok dalam definisi langkah Ruby. Itu sebenarnya dibutuhkan.Jawaban:
PEMBARUAN : Metode yang dijelaskan di bawah sudah tidak digunakan lagi. Cara yang disarankan untuk memanggil langkah dari dalam langkah lain sekarang terlihat seperti ini:
Metode lama dan tidak berlaku lagi (untuk referensi):
Anda dapat memanggil langkah-langkah dari langkah lain seperti ini:
Jika semua skenario dalam fitur memerlukan ini (atau langkah lain), Anda juga dapat menambahkan Latar Belakang ke setiap fitur, dengan langkah-langkah umum, seperti:
sumber
steps %Q{Given I am logged in}
steps
metode tersebut tidak ada. Lihat jawaban saya di bawah.Perhatikan bahwa metode untuk memanggil langkah-langkah dalam langkah-langkah telah berubah di versi terbaru ketimun, yang akan Anda lihat jika Anda mendapatkan kesalahan seperti "PERINGATAN: Menggunakan 'Diberikan / Kapan / Kemudian' dalam definisi langkah tidak berlaku lagi, gunakan 'langkah' untuk panggil langkah lain sebagai gantinya: /path/to/step_definitions/foo_steps.rb: 631: di `blokir '". Lihat wiki ketimun untuk detailnya.
Inti dari perubahannya adalah Anda sekarang harus menggunakan metode
step
atausteps
.sumber
syntax error, unexpected tIDENTIFIER, expecting keyword_end
stackoverflow.com/questions/43319331/…Memanggil langkah-langkah dari definisi langkah adalah praktik yang buruk dan memiliki beberapa kelemahan :
Aslak Hellesøy merekomendasikan untuk mengekstrak tindakan populer ke Dunia daripada menggunakan kembali langkah-langkah. Ini mengisolasi tindakan tersebut di satu tempat, membuat kode ini lebih mudah ditemukan. Anda juga dapat mengekstrak kode ke kelas atau modul Ruby biasa.
Berikut adalah diskusi yang berguna tentang masalah ini di milis Ketimun - tautan
sumber
Sebaiknya gabungkan langkah Anda dengan% {} daripada tanda kutip. Kemudian, Anda tidak perlu menghilangkan tanda kutip ganda yang harus sering Anda gunakan .:
sumber
Gunakan kembali kata kunci dalam file fitur yang akan memberikan kode dapat digunakan kembali.
Sangat TIDAK disarankan untuk memanggil definisi langkah dalam definisi langkah.
Saya akan menulis file fitur saya dengan cara ini,
Dalam definisi langkah saya, (Ini adalah Java)
Dengan cara ini, ada banyak kode yang dapat digunakan kembali. Diberikan dan Kemudian Anda yang sama menangani skenario yang valid dan tidak valid. Pada saat yang sama, file fitur Anda masuk akal bagi pembaca.
sumber