我如何才能访问在测试中呈现我的视图的 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 是来自 Kernelso it is already "stubable"

的方法