2017-10-11 8 views
0

私はrspecを使ってRubyターミナルアプリをテストしています。私はハッシュの変更をテストすることができません。rspecでのトラブルと期待される変更

私はまだ一般的なテストの周りに頭を抱えているので、私はテストに関して複数のことを誤解している可能性が高いです。

私は、アカウントのインスタンスに請求が追加されたが、その費用がアカウントの制限を超えていることをテストしようとしています。アカウントの残高は変更されません。

class Account 
    def apply_charge(card_holder_name, charge) 
    charge  = int_dollar_input(charge) 
    account  = find_account_by_card_holder(card_holder_name) 
    temp_balance = account[:balance] + charge 

    account[:balance] = account[:balance] + charge if temp_balance < account[:limit] 
    end 
end 

describe "Adding a charge to an account" do 
    context "GIVEN a charge amount that exceeds the account limit" do 

    let(:account)  { subject.add_account("William", 5454545454545454,'$1000') } 

    it "will do nothing" do 
     expect(subject.apply_charge('William', '$1200')). 
     to_not change {account[:balance]} 
    end 
    end 
end 

アカウントは、ハッシュの配列(単数または複数)

account.inspect = [{:card_holder_name=>"William", :card_number=>5454545454545454, :limit=>1000, :balance=>0}] 

1) Account Adding a charge to an account GIVEN a charge amount that exceeds the account limit will do nothing Failure/Error: expect(subject.apply_charge('William', '$1200')). to_not change {account[:balance]}

expected `account[:balance]` not to have changed, but was not given a block 
# ./spec/account_spec.rb:46:in `block (4 levels) in <top (required)>' 

答えて

2

期待するブロックにする必要がある:expect { subject.apply_charge('William', '$1200') }.to.....

関連する問題