2012-09-20 17 views
16

RSpec ve Capybara'da yeniyim ve sayfanın üzerinde bir sürenin olup olmadığını test etmeye çalışıyorum. 12:00 veya 14:24 veya 08:12, test etmeye çalıştığım şeyin iyi örnekleri.Sayfanın normal ifadesi var ise Capybara sınaması

aşağıdaki regex kullanıyorum:

/^\d{2}:\d{2}/ 

Ben sayfası bu regex içeriyorsa "ifade o" Kapibara test etmek nasıl emin değilim.

cevap

24

Ben

page.text.should match(/^\d{2}:\d{2}/) 

gibi bir şey herhalde olur yoksa, yeni RSpec sözdizimi

expect(page.text).to match(/^\d{2}:\d{2}/) 

ile Yoksa değil tüm sayfayı ancak bazı elemanı, örneğin test edebilirsiniz

find("span.time").text.should match(/^\d{2}:\d{2}/) 
+0

Teşekkür ederiz! Page.text kullanımdan kaldırılacak mı? –

+1

En azından yakın gelecekte olmamasına inanıyorum. Birçok insanın kullandığı ve iyi okuduğunu düşündüğü gibi görünüyor. Daha fazla ayrıntı için [bu blog gönderisine bakın] (http://myronmars.to/n/dev-blog/2012/06/rspecs-new-expectation-syntax) – khustochka

+0

İçeriği almayı ve ardından Capybara olmayan eşleştiricileri kullanmanın sonuç, bir maçın gerçekleşmesini beklemenin Capybara işlevselliğini bozar. Bu çözümü kullanarak, metni, aradığınız metni yerleştirmek için işten önce metni alabilirsiniz. Bunun Capybara anti-pattern olduğunu söyleyecek kadar ileri giderim. –

11

bu yeni davranış olup olmadığını bilmiyorum, ama sadece has_content? kullanabilirsiniz:

expect(page).to have_content(/do not have permission/i)

:

RSpec olarak page.has_content?(/do not have permission/i)

, yani böyle bir şey olurdu

Bunu online documentation for capybara numaralı belgede buldum, ancak'ten beri has_text? altında bulunuyorsadece bir takma addır.

+0

Ne yazık ki Capybara, [DSL belgeleri] başına büyük/küçük harf duyarlı olmayan aramaları desteklememektedir (https://github.com/jnicklas/capybara#the-dsl) –

+1

Bu, eşleme değil, xpath araması içindir. "have_content", "has_text" adlı bir takma ad olan "has_text" ifadesiyle tanımlanır. Ruby regex motoru, bir normal ifadenin capibara'nın DSL'siyle değil, bir şeyle nasıl eşleştiğini belirler. https://github.com/jnicklas/capybara/blob/1a9417061c08194d9c4332cbbac186798cd5978a/lib/capybara/node/matchers.rb#L435 – Nerdmaster