我正在为我的控制器编写rspec测试,但我无法找到解决问题的解决方案。 对于其中一个边缘案例测试,我需要验证一个实例变量的值。 如何在不必定义访问者的情况下访问它? 通常默认为:
controller.variable.should == '3.15'
不起作用。
定义
只是让测试通过才会很愚蠢 我确信有更聪明的方式。attr_reader:变量
答案 0 :(得分:43)
controller.instance_variable_get(:var)
如果您发现自己这样做,您可能需要重新考虑信息隐藏的方法,以便您测试基本行为而不是偶然的实现细节。您的测试应确保“事物”能够正常运行,而不会过于严格地限制特定实现。
编辑:对于使用控制器做同样的事情,是不是assigns(:var)
rails测试魔法?