0

我有一个依赖于 3rd 方 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 回答