2016-12-15 80 views
0

我在Rails 4.2.7.1控制器动作的错误,我修改传入的参数:如何测试冻结字符串作为参数的Rails动作?

params[:temperature].gsub!(',', '.') 

直到最近这个工作,但它的开发和生产,现在失败:

can't modify frozen String 

更新:冻结字符串的原因是application_controller.rb文件顶部的注释:

# frozen_string_literal: true 

我有问题的解决方法,但我没有测试,发现错误。我的控制器测试和集成测试都通过了错误的代码,并且我发现参数并未在控制器中冻结,即使它们在测试中发布时被冻结。

如何确保冷冻参数在我的测试中到达控制器?

+0

您使用的是哪个版本的Ruby? –

+0

我使用的Ruby 2.3.1和JRuby 9.1.5.0具有相同的结果。 – donV

回答

0

您可以使用Capybara宝石和功能测试,以完全相同的方式测试您的应用程序。这使用一个真正的网页浏览器来锻炼你的应用程序它完美地发现了我的错误。

不利的一点是,它是太多比控制器测试或集成测试慢10-100倍。