我的应用程序依赖于名为PSC
的第三方API,但我希望将我的黄瓜测试与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步骤,其目的是提供存根。
答案 0 :(得分: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
......哪个有效。不幸的是,它不允许我重复使用存根作为他们自己的步骤,但它可以工作。
更新您可以通过将存根分配给类级别变量来解决此限制,该变量可以从同一场景中的其他步骤访问。