Могут ли издеваться и огрызаться между шагами огурца? - PullRequest
0 голосов
/ 13 января 2012

У меня есть приложение, основанное на стороннем API, которое называется PSC, но я хочу изолировать свои тесты на огурец от вызовов API в PSC.

Итак, я написал пару шагов огурца:

When /^we pretend that PSC is up$/ do
  PscV1.default_psc_connection("test user").stub!(:default_connection_is_up?).and_return(true)
end

When /^we pretend like PSC assignments exist for all subjects$/ do
  PscV1.default_psc_connection("test user").stub!(:assignment_exists?).and_return(true)
end

... и что эти заглушки должны делать - заставить сценарий Cucumber думать, что вызовы API работают. Однако заглушки, кажется, не сохраняются между шагами, поэтому дальнейшие шаги в моем сценарии не возвращают возвращаемые значения заглушек, они пытаются выполнить реальный вызов API, и поэтому они терпят неудачу.

Есть ли способ заставить окурки сохраняться хотя бы в течение всего сценария? Я успешно использовал заглушки в других тестах Cucumber, так что я знаю, что они работают в целом, но я впервые пишу шаг Cucumber, цель которого - предоставить заглушку.

1 Ответ

0 голосов
/ 13 января 2012

Насколько я могу судить, ответ на то, сохраняются они или нет, довольно просто: "Нет".

Я написал комбинированный шаг, который сделал следующее:

When /^I follow "([^\"]*)" while pretending that PSC is up and assignments exists for all users$/ do |link_text|
  PscV1.stub!(:default_connection_is_up?).and_return(true)
  PscV1.default_psc_connection("test user").stub!(:assignment_exists?).and_return(true)
  click_link link_text
end

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

ОБНОВЛЕНИЕ Возможно, вы сможете обойти это ограничение, назначив заглушку переменной уровня класса, которая доступна из других шагов в том же сценарии.

...