如何在我的rspec测试中访问“请求”和“会话”对象?

时间:2018-09-11 21:35:52

标签: ruby-on-rails rspec

我有一个Rails 4.2应用程序,它根据主机名执行不同的业务。我知道这种做法在某些领域不被接受,但是我设法在大约400个网站上使用相同的代码库,节省的时间| cpu | ram | db | money | squirrels很大。

例如: 对于用户john@doe.com的www.example.com,它可能会显示带有$ 5000价格标签的产品1;

对于所有用户,www.blah.com可能会显示产品1的价格为123美元。运费为$ 400。

这全部基于主机名和用户访问和/或登录网站时存储在会话中的许多变量。

我想写一堆规范来测试应用程序的各个方面,但是我需要能够在会话中设置request.host,格式和某些内容。

如何完成此操作?

以后编辑:

我设法通过源代码进行查找和替换,并从一些帮助器方法中完成了会话/请求访问。现在,我可以按照以下说明存根:

            allow_any_instance_of(ApplicationHelper).to receive(:detect_user_info_by_ip).with("ip").and_return( { :provider => "dummy", :ip => "127.0.0.1", :lat => 1.0, :latitude => 1.0, :lon => 2.1, :long => 2.1, :longitude => 2.1, :regi
on => "EU", :country => "GB", :city => "Testville", :country_iso2 => "GB", :success => true} )
            allow_any_instance_of(ApplicationHelper).to receive(:detect_user_info_by_ip).and_return( { :provider => "dummy", :ip => "127.0.0.1", :lat => 1.0, :latitude => 1.0, :lon => 2.1, :long => 2.1, :longitude => 2.1, :region => "EU",
 :country => "GB", :city => "Testville", :country_iso2 => "GB", :success => true} )

最重要的是:比从规范内访问请求和会话对象更容易重构和存根。

0 个答案:

没有答案