Pregunta

Tengo una aplicación que se basa en una API de terceros llamada PSC, pero quiero aislar mis pruebas de pepino de las llamadas API a PSC.

Entonces, escribí un par de pasos de pepino:

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

... y que estos trozos se supone que deben hacer es hacer que el escenario de pepino piense que las llamadas API están funcionando. Sin embargo, los trozos no parecen persistir entre los pasos, por lo que otros pasos en mi escenario no obtienen los valores de retorno retirados, intentan hacer una llamada API real y, por lo tanto, fallan.

¿Hay alguna forma de conseguir que los trozos persistan al menos tanto como un escenario completo? He usado stubs con éxito en otras pruebas de pepino, por lo que sé que funcionan en general, pero esta es la primera vez que escribo un paso de pepino cuyo propósito es proporcionar un trozo.

¿Fue útil?

Solución

Por lo que puedo decir, la respuesta a si persisten o no, simplemente, "no".

Terminé escribiendo un paso combinado que hizo lo siguiente:

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

... que funciona. No me permite reutilizar los trozos, como sus propios pasos, desafortunadamente, pero funciona.

ACTUALIZAR Es posible que pueda superar esta limitación asignando el trozo a una variable de nivel de clase, a la que se puede acceder desde otros pasos dentro del mismo escenario.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top