检查助手中的零值或负值?

时间:2015-09-27 03:48:48

标签: ruby helper rspec-rails ruby-on-rails-4.2

我编写了以下rspec功能,以检查输入的值是否等于零或否定:

require 'rails_helper'

RSpec.feature 'Users can create new credits' do

  before do
    visit credits_url
    click_link 'New Credit'
  end

  scenario 'with zero value' do
    fill_in 'Amount', with: 0.00
    click_button 'Create Credit'

    expect(page).to have_content 'Credit has not been created.'
  end

  scenario 'with negative value' do
    fill_in 'Amount', with: -100.00
    click_button 'Create Credit'

    expect(page).to have_content 'Credit has not been created.'
  end

end

我认为,要通过此测试,我需要为此编写helpers/credit_helper.rb,但无法确定从哪里开始。

也许我对帮助者有误?

2 个答案:

答案 0 :(得分:0)

通过使用以下模型credit.rb来解决问题:

class Credit < ActiveRecord::Base
  validates :amount, presence: true, numericality: { greater_than_or_equal_to: 1 }
end

参考:https://stackoverflow.com/a/26257029/1745902

答案 1 :(得分:-1)

嗯,这是一种完全未经测试的方法。

controller:

def create
 @payment = Payment.new(payment_params)
 amount=@payment(params[:amount])

  if (amount > 0)
     payment.save
  else 
     flash[:error] = 'Credit has not been created.'
  end

end

这只是一种方法的想法。您必须使用以下内容将Flash错误呈现给页面:

<% if flash[:error] -%>
  <p ><%=h flash[:error] %></p>
<% end -%>

这不会阻止用户输入少于1的金额,只是测试它,并且还没有创建“信用”。&#39;看起来你的测试正在寻找的内容。如果您想要预防它,那么正如我所说,您可以直接在表单上进行某种验证。