Webrat和Rails:在click_button之后使用assert_contain给我“你被重定向”

时间:2010-06-04 13:01:13

标签: ruby-on-rails webrat

我正在使用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,所以我错过了一些明显的东西吗?为什么我坚持使用重定向响应?

谢谢!

德布

4 个答案:

答案 0 :(得分:11)

使用新的Rails 3应用程序,我也遇到了这个问题,测试了一个简单的方法,其中包括控制器中的redirect_to调用。该方法本身工作正常,但Webrat将返回“你被重定向”。响应。

添加黄瓜中的“然后显示页面”步骤(因此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调用现在可以正常工作。

答案 1 :(得分:3)

答案 2 :(得分:0)

您的应用中是否有任何身份验证?我认为重定向是因为你没有经过身份验证。如果我的假设是正确的,请首先使用Webrat编写一个登录设置。

答案 3 :(得分:0)

以下是您需要做的事情来解决这个问题。

https://gist.github.com/752766