0
我正在嘗試學習MiniTest並通過這樣做,我已經開始測試使用PayPal API批准/拒絕信用卡付款的應用程序之一。以下是我在測試Payment類中的購買方法的嘗試。 (CREDIT_CARD原本是一個私有方法,轉移到公衆進行測試)MiniTest ::對於應該返回true的測試返回false的斷言
payment.rb
require "active_merchant/billing/rails"
class Payment < ActiveRecord::Base
belongs_to :order
attr_accessor :card_number, :card_verification
def purchase(card_info, billing_info)
if credit_card(card_info).valid?
response = GATEWAY.purchase(price_in_cents, credit_card(card_info), purchase_options(billing_info))
@paypal_error = response.message
response.success?
end
end
def price_in_cents
(@total.to_f * 100).round
end
def credit_card(card_info)
@credit_card ||= ActiveMerchant::Billing::CreditCard.new(card_info)
end
private
def purchase_options(billing_info)
billing_info
end
end
payment_test.rb
require 'test_helper'
require "active_merchant/billing/rails"
class PaymentTest < ActiveSupport::TestCase
setup do
@card_info = {
brand: "Visa",
number: "4012888888881881",
verification_value: "123",
month: "01",
year: "2019",
first_name: "Christopher",
last_name: "Pelnar",
}
@purchase = Payment.new
end
test "purchase" do
assert @purchase.credit_card(@card_info).valid?, true
end
end
錯誤信息運行rake test
後:
--------------------------
PaymentTest: test_purchase
--------------------------
(0.1ms) ROLLBACK
test_purchase FAIL (0.02s)
Minitest::Assertion: true
test/models/payment_test.rb:20:in `block in <class:PaymentTest>'
Finished in 0.03275s
1 tests, 1 assertions, 1 failures, 0 errors, 0 skips
我改變了方法回到私人和運行測試與你提供的邏輯,這就是它返回的:Minitest :: Assertion:斷言失敗,沒有給出的消息。 – Ctpelnar1988
感謝您糾正我的私人方法測試問題btw 。我一直在努力嘗試它的語法。 – Ctpelnar1988
您是否更改設置進入def設置? –