【发布时间】:2015-08-14 15:04:32
【问题描述】:
我正在为我为 Directory 对象创建的 CommandLineInterface 类编写 RSpec 单元测试。 CommandLineInterface 类使用这个Directory 对象来打印出我的Directory 中的人员列表。 Directory 有一个 #sort_by(param) 方法,它返回一个字符串数组。字符串的顺序取决于传递给#sort_by 方法的param(例如sort_by("gender")。在我的CLI 规范中模拟Directory 行为的正确方法是什么?我会使用instance_double 吗?我不确定如何为带有参数的方法执行此操作,例如按性别排序。
我只使用 Ruby 和 RSpec。这里没有使用 Rails、ActiveRecord 等。
我要模拟的类和方法的片段:
class Directory
def initialize(params)
#
end
def sort_by(param)
case param
when "gender" then @people.sort_by(&:gender)
when "name" then @people.sort_by(&:name)
else raise ArgumentError
end
end
end
【问题讨论】:
-
粘贴实际代码会更容易回答。
标签: ruby unit-testing rspec mocking