0

と呼ばれるサードパーティのAPIに依存するアプリがありますPSCが、キュウリのテストをPSCへのAPI呼び出しから分離したいと考えています。

それで、私はいくつかのキュウリのステップを書きました:

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ステップを作成したのはこれが初めてです。

4

1 に答える 1

0

私の知る限り、それらが持続するかどうかの答えは、非常に単純に「いいえ」です。

私は次のことを行う複合ステップを書くことになりました:

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

...これは機能します。残念ながら、スタブを独自の手順として再利用することはできませんが、機能します。

更新同じシナリオ内の他のステップからアクセスできるクラスレベルの変数にスタブを割り当てることで、この制限を回避できる場合があります。

于 2012-01-13T19:28:42.400 に答える