2013-09-11 1 views
3

Там аналогичный вопрос @Gherkin in Behat and input validations scenariosBDD и Behat специальные символы

Однако это не то же самое.

Моя проблема заключается в том, что мне нужно было сценарий описывает примеры или массивы

Given I have a problem with data 
    | in | this | array  | 
    | how | can  | I   | 
    | add | special | characters | 

Большинство специальных символов в порядке, но ват о кавычках и трубы?

special characters example: \|!"#$%&/()=?«»'{}[]'`^~*+ºª-_.:,;<>@ł€¶ŧ←↓→øþĸħŋđðßæ|«»¢“”nµ 

Благодаря

ответ

0

Найдено в этот вопрос, необходимо иметь ускользающей обратной косой черты «\»

Я попытался это, но на редактора я использую это не предполагало, так необходимо было выполнить функциональный тест для проверки, а использование \ "или \ | работало, как ожидалось.

+0

Огурец принимает, но он не работает на behat – mloureiro

3

Я знаю, что прошло год с тех пор, как это было опубликовано, но сегодня была аналогичная проблема, и я опубликовал свое решение here.

Я копирую его здесь, в случае, что группы Google размещать удаляется:

Проблема

Мой файл .feature что-то вроде этого:

Then I get a response with "error" equals to "<error>" 

And I get a response with "error" equals to "<error_message>" 


Examples: 

|error     | error_message                | 

|NotFoundHttpException | Something with quotes "More text here"      | 

Как вы можете см. Я вызываю тот же самый шаг, чтобы проверить один из столбцов, который содержит кавычки в тексте и другой столбец, которые этого не делают.

Когда я запускаю тесты Behat, «Еще текст здесь» принимается за другой параметр, а Behat предлагает другой фрагмент.

Раствор

Чтобы исправить это, мы должны использовать другой символ, отличный от "сказать Behat, что переменная присутствует, в моем случае я использовал одиночные кавычки.

Итак, у меня есть изменил .feature так:

Then I get a response with "error" equals to "<error>" 

And I get a response with "error_message" equals to '<error_message>' escaping quotes 

Examples: 

|error     | error_message               | 

|NotFoundHttpException | Something with quotes "More text here"      | 

Тогда я обновил свою реализацию PHP тестов, как это:

/** 
* @Then I get a response with :attibute equals to :value 
* @Then /^I get a response with "([^"]+)" equals to '([^']+)' escaping quotes$/ 
*/ 
public function iGetAResponseWithEqualsTo($attibute, $value) 

Эта же реализация называется.

Я пришел с этим решением после прочтения this page, в случае, если кому-то это понадобится.

0

Я нахожусь на Behat 3.0, что могу просто указать строки, используя '' в качестве разделителя, например.

Then I should see the text 'some "text" with "quotes"', и он работает так, как есть, без необходимости писать свой собственный шаг.

1

Жизнеспособная альтернатива, которую я нашел, состоит в том, чтобы соответствовать двухэтапным определениям, одно со строкой, которая соответствует заключенным в двойные кавычки, а другая в PyString (тройная цитата под шагом).

Исх.

And the email body should contain 
""" 
This link with double quotes <a href="http://mockshare.url/file.pdf">DOWNLOAD</a> 
""" 

Метод:

/** 
* Checks that the body of the last accessed email contains a string. 
* 
* @param mixed $body The string or PyString representing text to match. 
* 
* @uses A PyString class sometimes, to help with double quotes in the matched string. 
* (Hence the string casting). 
* 
* @Then the email body should contain :body 
* @Then the email body should contain 
* 
* @return void 
*/ 
public function theEmailBodyShouldContain($body) 
{ 
    assertContains((string) $body, $this->body); 
}//end theEmailBodyShouldContain() 
+1

играть с этим, я нашел строку '* @Then тело электронной почты должен содержать: body' быть ненужным, если всегда использовать триплекс '' '. – scones