我正在尝试测试rake任务,该任务会刮擦我的网站并将内容推送到弹性搜索服务器;任务工作正常。但是测试失败了,因为在一个视图中我随机选择了一些这样的值:
[:breast,:ovarian][rand(2)]
(rand * 4)-2
rand(Date.new(2006)..Time.now.to_date)
这意味着我需要存根rand
。为了存根rand
,我需要访问正在调用它的类实例,在这种情况下,它是呈现我的视图的任何类。调用puts self.class
只返回Class
和一个id,那么如何才能获取该实例才能存根?
我可以将这些值作为实例变量从控制器传递到视图中,如果获得控制器的操作会更容易。
答案 0 :(得分:0)
长话短说:最好提取有问题的逻辑并将其放在帮手中。通过这种方式,您可以轻松地将其存根,甚至可以根据需要对其进行单元测试。此外,这可以提高代码的整体质量(逻辑不属于视图)。
另外,rand
是来自Kernel
,so it is already "stubable"