【发布时间】:2014-04-30 08:28:42
【问题描述】:
我有一个方法#get_something,它返回一个复杂的对象。我想检查这个复杂对象的特定公共属性是否等于字符串。
这就是我知道我可以测试这个的方式:
require 'rspec/autorun'
class MySubject
ComplexObject = Struct.new(:type, :trustworthiness)
def get_something
ComplexObject.new('serious', 100)
end
end
RSpec.describe MySubject do
describe '#get_something' do
it 'returns an serious object' do
expect(subject.get_something.type).to eq('serious')
end
it 'returns an trustworthy object' do
expect(subject.get_something.trustworthiness).to be > 90
end
end
end
不知道有没有办法把期望写成这样:
expect(subject.get_something).to have_attribute(:type).to eq('serious')
expect(subject.get_something).to have_attribute(:trustworthiness).to be > 90
这背后的原因是我想明确说明我对#get_something 的结果感兴趣,而不是ComplexObject 实例。
是否已经有适用于这种情况的匹配器?如果不是,您将如何编写此规范,尤其是当您对正确设置多个属性感兴趣时?
提前致谢
【问题讨论】: