是否值得测试低级代码(如作用域)



测试作用域和排序等"核心"特性是否真的有利可图?我有几个测试,测试类似于下面的功能。在我看来,它只是在测试Rails的核心功能(作用域和排序),这些功能可能已经经过了很好的测试。

我知道这可能看起来像一个"意见"问题,但我想知道的是,如果我假设作用域/排序已经测试过了,并且对开发人员来说没有价值,那么如果有人知道我可能会错过的东西。

我的想法是,即使作用域/排序"坏了",如果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

是的,您应该测试作用域。它不全是内置功能;你必须写出来。它根据两个标准进行排序,所以它需要两个测试,一个用来证明它按名字排序(正如上面的测试所示),另一个用来证明当名字相同时,它会返回到姓氏。

如果范围更简单,您可以跳过单元测试,如果它在验收或更高级别的单元测试中得到了充分的测试。但是,只要范围本身需要多个测试,您就应该在范围本身的测试中进行测试,而不是在高级代码的测试中进行测试。如果您试图在高级代码的测试中这样做,那么读者将很难找到测试范围的细节,并且如果每个调用者的测试测试范围的所有功能,则可能导致重复。

相关内容

  • 没有找到相关文章

最新更新