这是我的rspec文件。我有PosRequest.authorize_card(@payment_detail)
行3次。是否有一种DRYer方式来写这个上下文?
context 'should get' do
it 'error message' do
PosRequest.authorize_card(@payment_detail)
@payment_detail.errorMsg.should_not eql(:nil)
end
it 'bank message' do
PosRequest.authorize_card(@payment_detail)
@payment_detail.cardMsg.should_not eql(:nil)
end
it 'claim message' do
PosRequest.authorize_card(@payment_detail)
@payment_detail.bankMsg.should_not eql(:nil)
end
end
答案 0 :(得分:1)
在context
内,你可以使用已经建议的
before do
do_something
end
对于此上下文中的所有测试只运行一次,或者您可以使用
before :each do
do_something
end
这将在此上下文中针对每个测试运行一次do_something
,您可以选择哪个更适合您的需求。
答案 1 :(得分:0)
context 'should get' do
before {PosRequest.authorize_card(@payment_detail)}
it 'sends error message' do
@payment_detail.errorMsg.should_not eql(:nil)
end
it 'sends bank message' do
@payment_detail.cardMsg.should_not eql(:nil)
end
it 'sends claim message' do
@payment_detail.bankMsg.should_not eql(:nil)
end
end
我对此进行了编辑以添加动词,以便您更清楚地了解每个规范的作用。