2012-01-13 101 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您可以通過將存根分配給類級別變量(可從同一方案中的其他步驟訪問)來解決此限制。