是否值得测试范围等低级代码?

时间:2014-05-18 18:32:08

标签: ruby-on-rails ruby-on-rails-4 testing rspec rspec-rails

测试"核心"实际上是否有利可图范围和排序等功能?我有几个测试功能,类似于下面的测试功能。在我看来,它只是测试Rails的核心功能(范围和排序),这些功能可能已经过很好的测试。

我知道这看起来像是一个"意见"问题,但我想知道的是,如果我认为范围/排序已经过测试并且开发人员无法测试,那么如果有人知道我会想念的任何事情。

我的想法是,即使范围/排序被打破了#34;如果Rails核心代码被破坏,我也无法真正做到,因为我拒绝接触核心代码非常好的理由(稍后在噩梦中进行更新......)。

我觉得"安全"有了更多的测试,但如果这些测试实际上并没有提供价值,那么它们只会占用测试套件的空间和时间。

# user.rb model
class User < ActiveRecord::Base
  scope :alphabetical, -> { order("UPPER(first_name), UPPER(last_name)") }
end

# user_spec.rb spec
context "scopes" do
  describe ".alphabetical" do
    it "sorts by first_name, last_name (A to Z)" do
      user_one = create(:user, first_name: "Albert", "Johnson")
      user_two = create(:user, first_name: "Bob", "Smith")
      ...

      expect(User.all.alphabetical.first.first_name).to eq("Albert")
    end
  end
end

1 个答案:

答案 0 :(得分:1)

是的,你应该测试范围。它不是所有内置功能;你必须写它。它按照两个标准进行排序,因此它需要两个测试,一个用于证明它按名字排序(上面的测试显示),另一个用于证明当名字相同时它会回到姓氏上。

如果范围更简单,如果在验收或更高级别的单元测试中进行了全面测试,您可以跳过单元测试。但是一旦作用域本身需要多个测试,您应该在范围本身的测试中执行此操作,而不是在更高级别代码的测试中。如果您尝试在更高级代码的测试中进行此操作,则读者很难找到测试范围的详细信息,如果每个调用者的测试都测试了范围的所有功能,则可能导致重复