【发布时间】:2019-04-24 10:11:46
【问题描述】:
我有一个服务方法
class Service
def maximum_match
max = @hash.values.max
Hash[@hash.select { |_k, v| v == max }]
end
end
我的测试是这样的
context 'Finding tags count' do
it 'counts tags and returns maximum match' do
service = Service.new
expect(service.maximum_match).to eq some_result
end
end
如何传递任何值 @hash 来运行我的测试?
错误是NoMethodError:undefined method 'values' for nil:NilClass
【问题讨论】:
-
好吧,你必须在某处传递/设置
@hash。您将如何使用/调用 RSpec 之外的方法? -
顺便说一句,
select已经返回了一个哈希值。将结果包装在Hash[...]中是多余的。 -
在服务
@hash内将有一些从另一个方法分配的值。如何在我的测试中通过/设置@hash? -
@Ninja:在您的测试中调用其他方法来设置您的
@hash。您可以直接使用instance_variable_set进行设置,但您可能会冒着将测试与现实脱钩的风险。 -
是的,这会起作用,但我想通过传递随机的
@hash值来专门测试这种方法。这里的输入是不可预测的。
标签: ruby-on-rails ruby unit-testing rspec