2016-03-31 26 views
0

"Hayır" işleviyle örtmek istediğim koşullara sahibim "0": Given this is happening ve Given this is NOT happening. Yine de çalışan normal bir ifade bulamıyorum. behat, gherkin ve regex: "değil" veya "değil" kullanarak

/** 
* @Given /^this is<regexCheckingNOT> happening$/ 
*/ 
public function thisIsHappening($not) 
{ 
    if ($not) { 
     // do this 
    } 

    // do that anyway 
} 

Ben başarı olmadan bu çalıştı:

  • @Given /^this is(? NOT|) happening$/
  • @Given /^this is()?(NOT)? happening$/

ve ben bir yol bulamıyorum İşte

Ben başarmak istiyorum ne Bunu yapmak için.

+0

Bunu deneyin: '^ this (NOT)? $ 'Oluyor. [Demo] (https://regex101.com/r/dW4qE3/1) – Druzion

+0

@ Düzeltme regex çalışır ancak sonra "NOT" belirtilmişse, fonksiyonun içinde nasıl bilebilirim? Regex'inizi ve '$ not'unu kullandığım argüman olarak '' $ not'' –

+0

için uygun bir değer bulamıyorum Behat ya da Gherkin hakkında hiçbir şey bilmiyorum, fakat düz PHP'de' preg_match 'kullanabilirsiniz.) 'eşleşmeleri bulmak için. Bir dizi döndürür ve ilk eşleşmeyi, [1] '' '' '' DEĞİL '' – Druzion

cevap

1

Sen isteğe bağlı "değil" yaparak Yapmaya çalıştığınız şeyi başarabilirsiniz:

/** 
* @Given /^this is(not)? happening$/ 
*/ 
public function thisIsHappening($not = null) 
{ 
    if (null !== $not) { 
     // do this 
    } 

    // do that anyway 
} 

Sen varsayılan bir değer sağlamanız gerekir (yani null) bu argüman için mevcut olmayacak gibi "Bu oluyor" adımı.

/** 
* @Given /^this is(| not)? happening$/ 
*/ 
public function thisIsHappening($not) 
{ 
    if ($not === " not") { 
     // do this 
    } else { 
    // do that anyway 
    } 
} 

o tarihte aşağıdaki: Ayrıca böyle bir şey kullanabilirsiniz,

/** 
* @Given this is happening 
*/ 
public function thisIsHappening() 
{ 
    // do that anyway 
} 

/** 
* @Given this is not happening 
*/ 
public function thisIsNotHappening() 
{ 
    // do this 

    // do that anyway if you need something to happen in both cases 
    $this->thisIsHappening(); 
} 
+0

@Druzion Jakub, Behat'teki normal ifadeyle yakalanıp yakalanmadığını kontrol etmenin yolunu çizdi, bu sizin yorumunuzu kopyalamıyor –

+0

Neden downvote? : / –

0

kabul cevabı ilerletmek için:

Ancak, ben onları daha basit hale getirmek için bu iki ayrı verme yöntemleri düşünün kabul edilenle aynı kurallar, aynı zamanda $not için "değil" veya boş olabileceği için bir varsayılan değer ayarlamanız gerekmediği anlamına gelir.