0

这是我的 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
4

2 回答 2

1

在你里面context你可以使用已经建议的

before do
  do_something
end

在此上下文中的所有测试将只运行一次,或者您可以使用

before :each do
  do_something
end

这将在此上下文中为每个测试运行do_something一次,您可以选择更适合您的需求。

于 2013-04-17T20:07:00.410 回答
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

我对此进行了编辑以添加动词,以便您更清楚地了解每个规范在做什么。

于 2013-04-17T20:00:35.863 回答