清理控制器规格中参数的最佳方法

皮埃尔·马尔卡尔(Pierre Marchal)

我将RSpec与FactoryGirl一起使用(以构建我的模型)来测试我的应用程序中的控制器,并且该测试失败了:

subject do
  post :create, params: {
    my_model: attributes_for(:my_model,
                             :pictures_for_post_request)
  }, session: { user_id: user.id }
end
it 'return a 200 status response' do
  subject
  expect(response).to have_http_status 200
end

当测试失败时,它将返回http状态代码400,因为在我的模型验证中,我检查该模型的属性是否在两个整数值之间,并且作为param传递的值是一个字符串。

但是在我的控制器中,我解析了参数以获得适当的整数:

private

def sanitize_params
  [my_params_keys].each do |k|
    params[k] = params[k].to_i if params[k].nil?
  end
end

我的问题是:如何在不重写此规范中的函数的情况下,在此控制器规范中正确清理/.to_i我的参数?

格雷格答案

我认为最好是模型知道如何处理数据,而不是依赖于按预期方式格式化的数据。这就是模型验证的重点。如您所见,即使您尝试对其进行消毒,基于测试的参数也可以是任何东西。

class MyModel
  before_validation :convert_my_attribute_to_integer

  private

  def convert_my_attribute_to_integer
    self.my_attribute = self.my_attribute.to_i
  end
end

这样,您的模型可以在多个上下文中使用,而不必担心输入格式是否正确。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

测试控制器方法。规格

来自分类Dev

ASP.NET MVC处理控制器中动态参数数量的最佳方法

来自分类Dev

Rails:清理凌乱的控制器方法

来自分类Dev

在Codeigniter中命名控制器和模型的最佳方法

来自分类Dev

在AngularJS中管理控制器的最佳方法

来自分类Dev

这是在angularjs中调用控制器的最佳方法

来自分类Dev

控制器规格的未定义方法“包含”

来自分类Dev

关闭视图控制器的最佳方法?

来自分类Dev

从控制器获取Rails中的参数值create方法

来自分类Dev

Silex的控制器方法中如何发送参数-PHP

来自分类Dev

如何在codeigniter中获取控制器方法参数?

来自分类Dev

REST控制器规格示例?

来自分类Dev

在控制器规格中发布请求

来自分类Dev

测试评论控制器。规格

来自分类Dev

获取Json控制器方法的参数

来自分类Dev

HttpSession作为控制器中的参数

来自分类Dev

通用控制器中hasPermission的参数

来自分类Dev

MVC控制器中的本地参数

来自分类Dev

控制器Symfony中的省略参数

来自分类Dev

通用控制器中hasPermission的参数

来自分类Dev

HttpSession作为控制器中的参数

来自分类Dev

在 Rails 控制器中拆分参数

来自分类Dev

在容器中拥有多个控制器的最佳方法是什么?

来自分类Dev

在yii2 rest urlmanager中包含所有控制器的最佳方法

来自分类Dev

在Laravel中对控制器进行单元测试的最佳方法是什么,也不测试路径

来自分类Dev

在控制器中获取“请求”对象的最佳方法是什么?

来自分类Dev

Ember.js:在集成测试中获取控制器的最佳方法

来自分类Dev

angular:提供本地存储数据的最佳方法?在每个控制器中设置rootScope?

来自分类Dev

在具有导航控制器的UIviewController中添加tabbarController的最佳方法?

Related 相关文章

  1. 1

    测试控制器方法。规格

  2. 2

    ASP.NET MVC处理控制器中动态参数数量的最佳方法

  3. 3

    Rails:清理凌乱的控制器方法

  4. 4

    在Codeigniter中命名控制器和模型的最佳方法

  5. 5

    在AngularJS中管理控制器的最佳方法

  6. 6

    这是在angularjs中调用控制器的最佳方法

  7. 7

    控制器规格的未定义方法“包含”

  8. 8

    关闭视图控制器的最佳方法?

  9. 9

    从控制器获取Rails中的参数值create方法

  10. 10

    Silex的控制器方法中如何发送参数-PHP

  11. 11

    如何在codeigniter中获取控制器方法参数?

  12. 12

    REST控制器规格示例?

  13. 13

    在控制器规格中发布请求

  14. 14

    测试评论控制器。规格

  15. 15

    获取Json控制器方法的参数

  16. 16

    HttpSession作为控制器中的参数

  17. 17

    通用控制器中hasPermission的参数

  18. 18

    MVC控制器中的本地参数

  19. 19

    控制器Symfony中的省略参数

  20. 20

    通用控制器中hasPermission的参数

  21. 21

    HttpSession作为控制器中的参数

  22. 22

    在 Rails 控制器中拆分参数

  23. 23

    在容器中拥有多个控制器的最佳方法是什么?

  24. 24

    在yii2 rest urlmanager中包含所有控制器的最佳方法

  25. 25

    在Laravel中对控制器进行单元测试的最佳方法是什么,也不测试路径

  26. 26

    在控制器中获取“请求”对象的最佳方法是什么?

  27. 27

    Ember.js:在集成测试中获取控制器的最佳方法

  28. 28

    angular:提供本地存储数据的最佳方法?在每个控制器中设置rootScope?

  29. 29

    在具有导航控制器的UIviewController中添加tabbarController的最佳方法?

热门标签

归档