Saya ingin mengonfirmasi bahwa suatu nilai adalah desimal (atau 0), jadi angkanya harus lebih besar dari atau sama dengan nol dan kurang dari 1.
describe('percent',function(){
it('should be a decimal', function() {
var percent = insights.percent;
expect(percent).toBeGreaterThan(0);
expect(percent).toBeLessThan(1);
});
});
Bagaimana cara saya meniru "> = 0"?
javascript
tdd
jasmine
Bryce Johnson
sumber
sumber
expect(percent).not.toBeLessThan(0);
Jawaban:
Saya pikir saya harus memperbarui ini karena API telah berubah di versi Jasmine yang lebih baru. Jasmine API sekarang memiliki fungsi bawaan untuk:
Anda harus menggunakan fungsi-fungsi ini dengan preferensi pada saran di bawah ini.
Klik di sini untuk informasi lebih lanjut tentang Jasmine matchers API
Saya tahu bahwa ini adalah pertanyaan lama dan terpecahkan, tetapi saya perhatikan bahwa solusi yang cukup rapi terlewat. Karena lebih besar dari atau sama dengan adalah kebalikan dari fungsi kurang dari, Coba:Dalam pendekatan ini, nilai persen dapat dikembalikan oleh fungsi async dan diproses sebagai bagian dari aliran kontrol.sumber
expect(2 + 2).not.toBe(5)
,expect(2 + 2).toBeGreaterThan(0)
,expect(2 + 2).toBeLessThan(5)
expect(NaN).not.toBeLessThan(0);
lolos bukannya gagal. (not.toBeLessThan
Hanya kebalikan jika Anda berasumsi bahwa itupercent
adalah Angka. Jika tidak, itu bukan kebalikannya.)Anda hanya perlu menjalankan operasi perbandingan terlebih dahulu, lalu memeriksa apakah itu benar.
sumber
since('expected percent to be greater than or equal to zero').expect(percent >= 0).toBeTruthy();
>=
, saya lebih suka pencocokan khusus karena itu membuat tes tetap rapi (cukup mudah dilakukan, lihat jawaban saya di bawah), tetapi untuk perbandingan yang muncul lebih jarang, atau tidak cukup ekspresif, plugin itu tampaknya persis hal yang benar. Terima kasih!expect(percent).toBeGreaterThan(-1);
xD Saya tidak mencobanyaVersi Jasmine saat ini mendukung toBeGreaterThan dan toBeLessThan.
sumber
Agak aneh ini bukan fungsi dasar
Anda dapat menambahkan pencocokan khusus seperti ini:
JasmineExtensions.js
Akibatnya Anda mendefinisikan konstruktor untuk matcher Anda - itu adalah fungsi yang mengembalikan objek matcher.
Sertakan itu sebelum Anda 'boot'. Pencocok dasar dimuat pada saat boot.
File html Anda akan terlihat seperti ini:
Kemudian di boot.js Anda menambahkan panggilan untuk menambahkan matcher setelah jasmine telah ditentukan tetapi sebelum jasmine.getEnv (). Get env sebenarnya adalah panggilan penyiapan (dengan nama yang agak menyesatkan).
Matcher mendapatkan penyiapan dalam panggilan ke setupCoreMatchers di konstruktor Env.
Mereka menunjukkan cara lain untuk menambahkan pencocokan khusus dalam pengujian sampel, namun cara kerjanya adalah dengan membuat ulang pencocokan sebelum setiap pengujian menggunakan
beforeEach
. Kelihatannya sangat mengerikan jadi saya pikir saya akan menggunakan pendekatan ini sebagai gantinya.sumber
Saya terlambat untuk ini tetapi mempostingnya untuk berjaga-jaga jika seseorang masih mengunjungi pertanyaan ini untuk mencari jawaban, saya menggunakan Jasmine versi 3.0 dan seperti yang disebutkan oleh @Patrizio Rullo Anda dapat menggunakan toBeGreaterThanOrEqual / toBeLessThanOrEqual .
Itu ditambahkan dalam versi 2.5 sesuai catatan rilis - https://github.com/jasmine/jasmine/blob/master/release_notes/2.5.0.md
Misalnya
atau
sumber
Saya mengalami masalah yang sama hari ini, dan ternyata, tidak terlalu sulit untuk menambahkan pencocokan khusus untuk itu. Keuntungan utama dari pencocok khusus adalah dapat mengembalikan pesan yang bermakna saat pengujian gagal.
Jadi inilah kode untuk dua pencocok,
.toBeAtLeast()
dan.toBeAtMost()
, jika itu membantu seseorang.sumber
Itu baru saja digabungkan di cabang master Jasmine GitHub, tambalan saya untuk menambahkan pencocokan yang Anda butuhkan:
Tambahkan pencocokan toBeGreatThanOrEqual dan toBeLessThanOrEqual
Tapi saya tidak tahu akan rilis yang mana. Sementara itu, Anda dapat mencoba menggunakan kode komit saya di salinan Jasmine lokal Anda.
sumber
Saya merekomendasikan menggunakan pluging Jasmine ini: https://github.com/JamieMason/Jasmine-Matchers
sumber
Anda dapat menggunakan fungsi tersebut
least
untuk memeriksa apakah suatu nilai lebih besar dari atau sama dengan beberapa nilai lainnya.Alias dari
least
adalahgte
(lebih besar dari atau sama dengan). Sebaliknya, Anda dapat menggunakanlte
(kurang dari atau sama dengan) untuk memeriksa kebalikannya.Jadi, untuk menjawab pertanyaan tersebut, Anda dapat melakukan:
expect(percent).to.be.gte(0)
sumber
TypeError: Cannot read property 'be' of undefined
untukexpect(1).to.be.gte(-1);