我正在使用webrat为Rails应用程序编写集成测试。填写表单后,用户按提交,然后创建一个帐户。
click_button "Submit"
assert_contain "Your Account Has Been Created"
但是,测试失败:
expected the following element's content to include "Your Account Has Been Created":
You are being redirected.
<false> is not true.
通常,要遵循重定向,我将使用post_via_redirect,但是从仅查看Webrat的示例来看,click_button后接assert_contain应该可以工作
我刚开始使用Webrat,所以我在这里遗漏了明显的东西吗?为什么我坚持使用重定向响应?
谢谢!
黛布
最佳答案
使用新的Rails 3应用程序时,我还遇到了测试简单方法的问题,该方法包括 Controller 中的redirect_to调用。该方法本身可以正常工作,但是Webrat会返回“您正在被重定向”。回复。
在 cucumber 中添加“然后向我显示页面”步骤(这样webrat看到的页面将在浏览器中打开)显示了“您正在重定向。”响应,并带有指向example.org链接的链接。
基于此,我发现了Yannimac的补丁(http://groups.google.com/group/webrat/browse_thread/thread/fb5ff3fccd97f3df):
#/lib/webrat/core/session.rb
#starting at line 288
def current_host
- URI.parse(current_url).host || @custom_headers["Host"] || "www.example.com"
+ URI.parse(current_url).host || @custom_headers["Host"] || default_current_host
end
+ def default_current_host
+ adapter.class==Webrat::RackAdapter ? "example.org" : "www.example.com"
+ end
进行这些更改解决了此问题,因此Webrat的redirect_to调用现在可以正常工作。
关于ruby-on-rails - Webrat和Rails : Using assert_contain after click_button gives me "You are being redirected",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2974330/