2012-03-22 72 views
4

我們正在運行rspec測試來檢查要加載的特定庫/模型。具體而言,我們想要測試創建對象時,我們會返回正確的Watir對象:用於FF和Chrome的Watir :: Browser,以及用於Safari的Watir :: Safari。如何在ruby/rspec中卸載'require'?

我們已經試過這樣做:Unload a ruby class但它只是刪除了常量,這不是我們想要的。

通常情況下,這不會是一個問題,但由於safariwatir和watir-webdriver的兼容性問題,情況並非如此。它有錯誤了:

superclass mismatch for class UnknownObjectException 

並以「修復」這一點,我們基本上必須選擇要加載的webdriver的(因此原來的邏輯 - 我們計劃測試)

是否有解決辦法這個?我們的測試通過,而不僅僅是當作爲一個整體運行。所以我們基本上不得不跳過一步來繞過需求問題。

回答

0

類在Ruby中都是對象,但類作爲一個」每次執行/對象空間」只是因爲Ruby類對象被指定爲常數存在。

因爲你的類的想法與戲劇模塊命名空間,你可以檢查一個對象的類型是動態的,如果這還不夠,你可以使用duck-type。因爲你提到了兼容性問題,所以有一種方法不適用於另一個(你可以測試)或者有方法它會爲每個返回不同的值(您可以測試它)。

0

當我需要'watir'gem時,我通過使用條件邏輯來處理與此相似的事情,以便只有一個版本結束根據環境的配置情況而定。我可以在稍後提供更多細節,也許在watir測試自動化市場結束後,我有一點時間爲您思考並挖掘一些代碼示例。

+0

謝謝!這仍然在擾亂我們。我們有條件的要求繼續,但我們正在努力測試這些條件。在這種情況下,當rspec通過測試用例時,先說它檢查是否加載了watir-webdriver,然後在它試圖測試是否需要safariwatir的時候,watir-webdriver仍然被加載,所以它會拋出錯誤 – corroded 2012-03-23 05:52:31

+0

我'有點困惑,你用rspec測試你的測試代碼嗎?這可能是你需要從這些測試中省略的一個方面,或許通過某種日誌記錄或一些調試放置語句「我正在加載Safari」等來確認它正在工作。 – 2012-03-27 16:27:24

2

New Anser:NEWS FLASH webdriver現在支持Safari!溝safariwatir和做這一切與webdriver。我今天剛剛在測試自動化市場上發現了這個,所以沒有太多細節。我希望在下週的某個時候在Watir社區看到一些關於此事的博客文章,一旦人們從中恢復過來此次會議。

更新:詳細信息現在在watir-webdriver blog關於如何使用Safari的工作

+0

哇,這是個好消息!我們所要做的就是等待更新?我們正在使用watir-webdriver 0.5.3。 – corroded 2012-03-25 05:19:53

+0

可能你可以嘗試更新webdriver gem,看看是否可以啓動類型爲safari的瀏覽器。 (你讓我希望在TAB活動上花更多時間與JariB談論這件事,以便掌握它的工作原理。) – 2012-03-27 16:23:06

+0

其實我試過但沒有運氣。你在談論watir或selenium webdriver嗎? – corroded 2012-03-28 14:13:43