我如何才能访问在测试中呈现我的视图的 class 实例?
How can I get access to the class instance that is rendering my view in a test?
我正在尝试测试抓取我的网站并将内容推送到 elasticsearch 服务器的 rake 任务;该任务工作正常。但是测试失败了,因为在一个视图中我随机选择了一些这样的值:
[:breast,:ovarian][rand(2)]
(rand * 4)-2
rand(Date.new(2006)..Time.now.to_date)
这意味着我需要存根 rand
。为了对 rand
存根,我需要访问调用它的 class-实例,在本例中是 class 呈现我的视图的任何实例。调用 puts self.class
只是 returns Class
和一个 id,那么我怎样才能获得实例以便存根呢?
我可以将这些值作为实例变量从控制器传递到视图中,如果获取控制器会更容易的话。
长话短说:最好提取有问题的逻辑并将其放在帮助程序中。这样您就可以轻松地对它进行存根,甚至可以在需要时对其进行单元测试。此外,这提高了代码的整体质量(没有逻辑应该属于视图)。
此外,rand
是来自 Kernel
、so it is already "stubable"
的方法
我正在尝试测试抓取我的网站并将内容推送到 elasticsearch 服务器的 rake 任务;该任务工作正常。但是测试失败了,因为在一个视图中我随机选择了一些这样的值:
[:breast,:ovarian][rand(2)]
(rand * 4)-2
rand(Date.new(2006)..Time.now.to_date)
这意味着我需要存根 rand
。为了对 rand
存根,我需要访问调用它的 class-实例,在本例中是 class 呈现我的视图的任何实例。调用 puts self.class
只是 returns Class
和一个 id,那么我怎样才能获得实例以便存根呢?
我可以将这些值作为实例变量从控制器传递到视图中,如果获取控制器会更容易的话。
长话短说:最好提取有问题的逻辑并将其放在帮助程序中。这样您就可以轻松地对它进行存根,甚至可以在需要时对其进行单元测试。此外,这提高了代码的整体质量(没有逻辑应该属于视图)。
此外,rand
是来自 Kernel
、so it is already "stubable"