我有一个函数get_type
,返回给定int:
def get_type(integer)
types = [...]
return types[integer]
end
使用RSpec进行测试时,我尝试执行以下操作:
describe 'function' do
context 'on valid input'
let(:input){ 2 }
let(:type){ 'large' }
let(:result){ get_type input }
it{ expect(result).to eq(type) }
end
end
但是,这会给出消息:
function on valid input should eq "large"
没有提及输入,因此听起来像函数应该总是返回"large"
。
如何更改此消息以表示:
function on valid input should eq type
或其他有意义的消息?我可以命名it
块:
it 'should have the correct type' do
expect(result).to eq(type)
end
但有没有一种更好的方法可以做到这一点,而基本上没有输入两次测试?
答案 0 :(得分:0)
我认为无益的信息应该被认为是一种气味 - 你正走在一条道路上,每一道测试只有expect(result).to eq(expected)
,墙壁为let
。在我看来,这是过度使用let
- 我认为你没有获得任何东西
describe 'function' do
context 'on valid input' do
it{ expect(get_type(2)).to eq('large') }
end
end
哪会产生更有帮助的失败信息。当表达式更复杂或者我可以给它们一个更好的名称时(例如名为let
的属性哈希),我会保留valid_attributes