我应该用Rspec测试控制器助手或控制器本身吗?

时间:2010-10-19 19:34:40

标签: ruby-on-rails testing rspec

我有PathsHelper通过处理其他参数以及当前网址的上下文来覆盖foo_urlfoo_path。这包含在ApplicationController

现在,我有:

describe ApplicationController do
  describe "#foo_url" do
     ...
  end
  describe "#foo_path" do
     ...
  end
end

我想知道做一些事情是否更好:

describe PathsHelper do
  describe "#foo_url" do
     ...
  end
  describe "#foo_path" do
     ...
  end
end

如果是这样,有没有合理的方法在辅助测试中设置一些实例变量,因为有基于当前url的条件。

2 个答案:

答案 0 :(得分:2)

控制器

请记住,在RSpec中,您正在指定行为,并确保这些行为按照您希望的方式发生。这些行为通过与您的控制器的交互发生。因此,请为控制器编写规范,并确保测试帮助程序所显示的行为。

你想避免过多地攻击你的类和对象的内容。这是RSpec出现的主要原因之一。人们对他们班级的内部状态进行了愚蠢的测试,而不是测试所期望的结果。

答案 1 :(得分:2)

虽然RSpec确实的目标是专注于行为,但我仍然在帮助规范中指定了复杂的助手。这就是为什么首先在RSpec中存在辅助规范的原因:)