我试图修补一些I18n
方法来测试正确的转义。在测试中执行此操作,它类似于:
test "JS files should be using correct escaping" do
module I18n
def self.t(*args)
%q{a JS interpolation ' " test}
end
end
filename = Rails.root + "app/assets/some_file.js.erb"
erb = ERB.new(File.read(filename))
result = erb.run
end
此时,I18n.t
中的所有some_file.js.erb
次呼叫确实已被替换...但是来自I18n文件的正确的值,而不是{{1} }。
换句话说,猴子补丁并没有在ERB中占据一席之地。我有办法让这项工作吗?
答案 0 :(得分:1)
我猜你的module I18n
实际上并未开启::I18n
,这可能是在意外情况下执行的,因此您实际上正在打开{ {1}}模块,用于某些SomethingUnexpected::I18n
测试框架的一部分。
最简单的方法是明确声明您希望在顶级命名空间中工作:
SomethingUnexpected