MST
星途 面试题库

面试题:Ruby中TDD实践之方法重构

假设你有一个Ruby方法 `def add_numbers(a, b) a + b end`,按照测试驱动开发(TDD)的流程,先编写测试用例来验证这个方法的功能,然后假设需求变更为该方法需要处理两个以上数字的加法,在不改变原有功能测试通过的情况下,重构这个方法和相应的测试用例。
45.7万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

初始测试用例(针对两个数字相加)

require 'test/unit'

class TestAddNumbers < Test::Unit::TestCase
  def test_add_numbers
    assert_equal(5, add_numbers(2, 3))
  end
end

def add_numbers(a, b)
  a + b
end

重构后的方法(处理两个以上数字的加法)

def add_numbers(*nums)
  nums.inject(0, :+)
end

重构后的测试用例(同时包含原有功能测试和新功能测试)

require 'test/unit'

class TestAddNumbers < Test::Unit::TestCase
  def test_add_numbers_two_numbers
    assert_equal(5, add_numbers(2, 3))
  end

  def test_add_numbers_multiple_numbers
    assert_equal(10, add_numbers(2, 3, 5))
  end
end

def add_numbers(*nums)
  nums.inject(0, :+)
end