gpt4 book ai didi

ruby-on-rails - Rails 中 around_action 设置的测试条件

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:56 26 4
gpt4 key购买 nike

在 Rails 应用程序中,当前区域设置是通过 around_action 回调在 ApplicationController 中设置的。与仅使用 before_action 相比,这是一个更简洁的解决方案,后者会让请求特定的语言环境悬而未决。

class ApplicationController < ActionController::Base
around_action :with_locale

def with_locale
I18n.with_locale(find_current_locale) { yield }
end
end

由于当前区域设置在请求完成后被重置,因此在测试中访问请求特定区域设置并不那么容易。使用 before_filter,以下测试将通过:

it 'sets locale from request'
get :action, locale: locale
I18n.locale.should == locale
end

我想不出一种方法来实现此测试以使用 around_filter 而不向 Controller 中注入(inject)一些额外的逻辑。 RSpec 有更简单的方法吗?

最佳答案

如何检查是否使用正确的参数调用了 I18n.with_locale

it 'sets locale from request'
allow(I18n).to receive(:with_locale)
get :action, locale: locale
expect(I18n).to have_received(:with_locale).with(locale)
end

关于ruby-on-rails - Rails 中 around_action 设置的测试条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26587486/

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