jom*_*mue 5 ruby testing rspec ruby-on-rails minitest
在 Rails 应用程序中,当前区域设置是ApplicationController
通过around_action
回调设置的。这是一个比仅使用 更干净的解决方案,before_action
后者会使请求特定的区域设置悬而未决。
class ApplicationController < ActionController::Base
around_action :with_locale
def with_locale
I18n.with_locale(find_current_locale) { yield }
end
end
Run Code Online (Sandbox Code Playgroud)
由于当前区域设置在请求完成后重置,因此在测试中访问请求特定区域设置并不容易。通过before_filter
以下测试将通过:
it 'sets locale from request'
get :action, locale: locale
I18n.locale.should == locale
end
Run Code Online (Sandbox Code Playgroud)
我想不出一种方法来实现此测试,以便在around_filter
不向控制器注入一些额外逻辑的情况下使用。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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1113 次 |
最近记录: |