gpt4 book ai didi

ruby-on-rails - 如何在 RSpec 中普遍覆盖 get 和 post 方法?

转载 作者:行者123 更新时间:2023-12-04 03:47:29 27 4
gpt4 key购买 nike

我想覆盖 RSpec 中的 getpost 方法。

我想这样做是为了在我的测试中处理子域。据我所知,处理子域的唯一方法是在每次调用之前更改 @request 对象。我可以在每次测试之前都这样做,但这会导致一些非常困惑的代码。

为了保持干燥,我尝试在 spec_helper.rb 中使用 config.before(:each) 方法,但这似乎不是在与测试相同的范围内运行,并且无权访问 @request

因此,我的下一个最佳方法是覆盖正确范围内的 getpost

def get *args
@request.host = @required_domain if @required_domain
super *args
end

我可以将此代码包含在每个规范文件的顶部,但我宁愿将其设置为通用的。如果我在 spec_helper.rb 中设置它,但它不会被调用。

我在哪里可以设置它来覆盖默认的 get 方法?

最佳答案

however this doesn't seem to be run in the same scope as the test.

这不太对 - 它在相同的范围内运行,但是在配置 @request 之前,所以它没有效果。

试试这个:

module RequestExtensions
def get(*)
@request.host = @required_domain if @required_domain
super
end
end

RSpec.configure do |c|
c.include RequestExtensions, :type => :controller
end

喂,大卫

关于ruby-on-rails - 如何在 RSpec 中普遍覆盖 get 和 post 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8447944/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com