2014-09-20 23 views
0

我有一個頁面對象類,有一堆做特定事情的方法。一種方法,我們稱之爲log_in_with確實是這樣的:頁面對象 - 從一個方法中分離出一個方法來報告它是否已經完成

def log_in_with(user, pass) 
    # does some stuff here 
end 

然而,這種特殊的方法將不會返回任何東西。因此,爲了讓我知道用戶是否已成功登錄,我需要:

a)將此功能嵌入到現有方法中,並將prob。將其重命名爲log_in_with_and_successful?或者創建一個單獨的方法def login_successful?(user,pass),它將調用log_in_with並報告登錄是否成功。但是,如果我調用login_successful,它將不清楚背後的究竟是什麼?來自其他一類的人,並不清楚這種方法是否同時進行登錄和報告是否成功。

我遇到了這個方法,它做了一些事情,而方法報告它是否成功地完成了問題。解決這樣的問題不是一些設計模式/最佳實踐嗎?

+1

爲什麼此方法不返回任何內容?如果登錄成功,最佳做法是返回用戶,否則返回零。或更好的事件:當用戶成功時返回用戶實例,用戶::用戶空時(使用例如空對象模式)與https://github.com/avdi/naught作爲實現此目的的幫助。 – konole 2014-09-20 15:06:25

回答

1

我相信用一種方法明確地做一件事是一種很好的做法。因此,請同時使用log_in_with(user, password)login_successful?,但不要從後者調用前者。在測試中顯示兩個調用本身,使我可以輕鬆地遵循測試的邏輯並破譯任何失敗消息,而單個調用會造成混淆,並迫使我深入課堂代碼。

describe "logging in" do 
    page.log_in_with('username', 'password') 
    expect(page.login_successful?).to be_true 
end 
相關問題