2016-11-30 113 views
0

對於我的測試,我想存根/假的測試所使用的網址,讓Rails中我request.host顯示爲除「www.example.com」Rspec /水豚/ Poltergeist:如何存根URL?

東西在我的研究中,大多數人認爲改變水豚的app_host,但這隻適用於您使用默認驅動程序。使用Poltergeist時,它實際上會轉到該URL。

還有什麼我可以使用的?

+1

當使用水豚/鬼驅人你這樣做測試完整的堆棧功能測試。當你這樣做時,你不應該試圖存根/模擬任何東西(也許你想要一個控制器規範?)。另外,當不使用默認的機架測試驅動程序時,您應該在應用程序(而不是www.example.com)中查看request.host的「127.0.0.1」。您可以將Capybara.app_host更改爲您想要的任何內容,但是需要確保您的本地DNS已將其解析爲127.0.0.1(/ etc/hosts條目等)。也許你需要更多地解釋你想要做什麼。 –

+0

是的,我想讓DNS解決它到127.0.0.1是我想要的(這是發展中發生的事情),但我有點擔心可能發生在CI中的事情,如CircleCI。有沒有辦法使用這樣的服務設置主機文件?這可能是我最好的選擇。 – amclelland

+0

你究竟想要測試哪些域名需要更改? –

回答

0

當使用水豚/ Poltergeist你正在做功能測試,測試整個堆棧。當你這樣做時,你不應該試圖存根/模擬任何東西(也許你想要一個控制器規範?)。

而且不使用默認的機架測試驅動程序,您應該看到「127.0.0.1」爲request.host在您的應用程序時(不是www.example.com)。您可以將Capybara.app_host更改爲您想要的任何內容,但是需要確保您的本地DNS已將其解析爲127.0.0.1(/ etc/hosts條目等)。大多數CI系統還允許您指定的DNS解析 - https://circleci.com/docs/configuration/#hosts

+0

我認爲這個「存根無」心態是有限的。例如。如果你正在測試付款,你不會想要發送真正的錢。我覺得外部的依賴關係(支付處理器,AWS等)可以被扼殺。如果我錯了,請糾正我。 –

+0

@MarosHluska部分正確 - 在功能測試中,您會爲處理付款的服務使用虛假(例如https://github.com/thoughtbot/fake_stripe)。你不想在功能測試中做某些修改你的代碼的東西(這是模擬/存根操作),否則你不確定你的生產代碼是否被實際測試過。 –