微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ruby-on-rails – 如何仅测试我被重定向到的URL的一部分(使用assert_redirected_to)?

在我的Rails应用程序的功能测试中,我想测试我被重定向到哪里.预期的URL指向外部资源(这意味着它不属于我的应用程序).

网址如下所示:https://my.url.com/foo?bar1=xyz\u0026amp;bar2=123

不幸的是,我无法预测参数,因为它们是由外部资源生成的.
但是,URL的其余部分总是保持不变:https://my.url.com/foo

我通常使用assert_redirected_to进行这种测试,但是这样会预期整个URL包括参数.

任何人都可以想到另一种方式来测试重定向,但是只能检查URL的第一部分,而没有参数?

(该URL不在分配哈希中)

*(我对应用程序进行API调用,哪个响应与URL我将redirect_to)

解决方法

http请求命令(如post,get等)在调用*时创建一个名为@response的实例变量. @response本身包含一个名为redirect_url的方法,该方法存储您被重定向到的URL(如果您真的被重定向了).

因此,我可以使用一个正常的assert_match来将正则表达式与@ response.redirect_url进行比较:

post :my_action_to_test
assert_response :redirect
assert_match /https:\/\/my.url.com\/foo/,@response.redirect_url

*(实际上,这些http方法只使用私有方法process,它创建了@response变量).

原文地址:https://www.jb51.cc/ruby/266752.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐