请考虑以下类和类方法:
class Foo < ActiveRecord::Base
scope :active, -> { where(deleted: false) }
class << self
def some_class_method
active.each do |foo|
foo.some_instance_method
end
end
end
end
在RSpec中测试这种方法的最佳实践是什么?到目前为止,我所学到的信息表明,我应该确保Foo的每个活动实例都收到对some_instance_method
的调用,但是如果我对Foo.some_class_method
有所期望,据我所知,我无法断言对Foo的任何实例的嵌套期望。
任何帮助将不胜感激!
答案 0 :(得分:1)
我采用的方法是分别测试some_instance_method
,例如:
it 'should return some value' do
expect(foo.some_instance_method).to eq('some value')
end
然后,您可以运行类方法并测试转换是否按预期进行:
context 'Foo#some_class_method' do
it 'should have some effect' do
expect(some_comparison_variable).to eq('some_before_state')
Foo.some_class_method
expect(some_comparison_variable).to eq('some_after_state')
end
end