Определете дали даден сценарий с краставици има чакащи стъпки

Бих искал да извлека състоянието на сценария в куката на сценария „След“. Забелязах, че .failed? методът не счита чакащите стъпки за неуспешни.

И така, как мога да определя, че даден сценарий не е изпълнен напълно, защото е неуспешен ИЛИ защото някои стъпки не са били внедрени/дефинирани.


person LiohAu    schedule 17.12.2013    source източник


Отговори (2)


Можете да използвате метода на състоянието. Стойността по подразбиране на статуса е :skipped, неуспешният е :failed и преминатата стъпка е :passed. Така че можете да напишете нещо подобно:

do sth if step.status != :passed

Освен това, ако използвате !step.passed?, той прави същото, защото проверява само за състоянието :passed.

По тази тема можете също да разгледате тази публикация за демонстриране на спецификациите на вашите функции пред клиентите ви: http://multifaceted.io/2013/demo-feature-tests/

person shamim    schedule 17.12.2013
comment
Добре, но тъй като куката AfterStep не се извиква, трябва да използвам куката след сценария и да превъртя всички стъпки, нали? Но не знам как мога да получа достъп до стъпките, когато сценарият е схема (полученият параметър на сценария няма метод за стъпки) - person LiohAu; 18.12.2013
comment
Когато се опитам да осъществя достъп до метода на стъпките, получавам следната грешка: частен метод steps' called for #<Cucumber::Ast::ScenarioOutline:0x007ff2cc374b70> (NoMethodError) /Users/...features/support/hooks.rb:126:in After' - person LiohAu; 18.12.2013
comment
Втората връзка е прекъсната. - person slm; 28.10.2014

LiohAu, можеш да използваш метода 'status' на самия сценарий, а не на отделни стъпки. Опитайте това: В куките добавете

After do |scenario|
  p scenario.status
end

Това ще даде следните състояния: Всяка стъпка, която не е внедрена/дефинирана, ще ви даде :undefined Сценарият е неуспешен (когато всички стъпки са дефинирани) :failed Сценарият преминава :passed

Използвайки същата кука, той ще ви даде статус за схема на сценарий, но за всеки примерен ред (тъй като за всеки примерен ред това е индивидуален сценарий). Така че, ако изобщо искате резултата от цял ​​контур, ще трябва да заснемете резултата за всички примерни редове и съответно да изчислите крайния резултат.

Надявам се това да помогне.

person Sam    schedule 04.01.2014