2012-01-13 97 views
0

我有一个应用程序依赖于名为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 

...什么这些存根应该做是使黄瓜方案认为,API调用工作。但是,这些存根似乎不会在步骤之间持续存在,因此我的方案中的其他步骤不会得到存根的返回值,它们会尝试进行实际的API调用,因此会失败。

有没有办法得到至少只要存根坚持作为一个完整的情景?我在其他Cucumber测试中成功地使用了stubs,所以我知道他们一般都会工作,但这是我第一次写一个黄瓜步骤,其目的是提供一个存根。

回答

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 

...它的工作原理。不幸的是,它不允许我重复使用存根,因为他们自己的步骤,但它的工作原理。

UPDATE您可以通过将存根分配给类级别变量(可从同一方案中的其他步骤访问)来解决此限制。