RoR和RSpec:如何在不定义访问器的情况下访问控制器实例变量?

时间:2009-07-16 13:50:06

标签: ruby-on-rails controller rspec

我正在为我的控制器编写rspec测试,但我无法找到解决问题的解决方案。 对于其中一个边缘案例测试,我需要验证一个实例变量的值。 如何在不必定义访问者的情况下访问它? 通常默认为:

controller.variable.should == '3.15' 

不起作用。

定义

  

attr_reader:变量

只是让测试通过才会很愚蠢 我确信有更聪明的方式。

1 个答案:

答案 0 :(得分:43)

controller.instance_variable_get(:var)

如果您发现自己这样做,您可能需要重新考虑信息隐藏的方法,以便您测试基本行为而不是偶然的实现细节。您的测试应确保“事物”能够正常运行,而不会过于严格地限制特定实现。

编辑:对于使用控制器做同样的事情,是不是assigns(:var) rails测试魔法?