DEV Community

kaede
kaede

Posted on

Rails 基礎 Part 05 -- create の単体テストを追加する

why

最初の単体テストを作るのに時間がかかった。
続きを一気に書く。


テスト実行結果の詳細を見せるための設定

これを入れると、どのテストが通ったのか表示される。
これを入れなければ、. (ドット)の数でしか通ったテストはわからない。

.rspec
Enter fullscreen mode Exit fullscreen mode
--require rails_helper
--format documentation
--color
Enter fullscreen mode Exit fullscreen mode


create

create は、レスポンスではなくデータベースをテストする。

参考

https://qiita.com/kagesumi3m/items/10244978273ffffa9b92

rspec

  1. let で bank_transaction を
describe BankTransactionsController do

  let (:request_params) {
    { 
      bank_transaction: {
        account_number: 111,
        amount: 222,
        description: 333,
      }
    }
  }

  context 'ログインしているとき' do
      before do
        FactoryBot.create(:bank_transaction)
      end

      it '1つの取引データの金額が取得できること' do
        # ....
      end

      it '取引データが作成できること' do
        post :create, params: request_params

        created_bank_transaction = BankTransaction.last

        expect(created_bank_transaction.account_number).to eq '111'
        expect(created_bank_transaction.amount).to eq 222
        expect(created_bank_transaction.description).to eq '333'

      end

      after do
        BankTransaction.destroy_all
      end
  end
end

Enter fullscreen mode Exit fullscreen mode

失敗した時(わざと変えている)

Image description

成功した時

rspec spec/controllers/bank_transactions_controller_spec.rb

BankTransactionsController
  ログインしているとき
    1つの取引データの金額が取得できること
    取引データが作成できること

Finished in 0.07932 seconds (files took 1.68 seconds to load)
2 examples, 0 failures
Enter fullscreen mode Exit fullscreen mode

Top comments (0)