Category Archives: Ruby

active record (has_one)

使い方

PayTransaction.rb

// has_oneでリレーション
class PayTransaction < ApplicationRecord
  // 名称を短くできる
  has_one :monitoring, class_name: 'PayTransactionMonitoring'

以下の使い方ができる

pay_transaction = PayTransaction.first
// createする場合
pay_transaction.create_monitoring

// build(new)する場合
monitoring = pay_transaction.build_monitoring
monitoring.name = "test"
monitoring.save

参考

http://railsdoc.com/references/has_one

Rspec before

before(:each)にすると、下の階層の各Describeごとに、
beforeが呼び出される。

require 'rails_helper'

describe 'test' do
  before(:each) do
    p "before"
  end

  describe 'test1' do
    it 'test1-1' do
      p "test1-1"
    end
  end

  describe 'test2' do
    it 'test2-1' do
      p "test2-1"
    end
  end
end

結果

test
  test1
"before"
"test1-1"
    test1-1
  test2
"before"
"test2-1"
    test2-1

Rspec examples再利用

require 'rails_helper'

RSpec.describe User, type: :model do
  // shared_examplesに引数を渡せる
  shared_examples '解答チェック' do |user, user_result|
    it 'name' do
      expect(user.name).to eq user_result["name"]
    end
    it 'age' do
      expect(user.age).to eq user_result["age"]
    end
  end
  describe 'test1' do
    user = User.new(name: "yohei", age: 35)
    user_result = {"name" => "yohei", "age" => 35}

    // shared_examples呼び出し
    it_behaves_like '解答チェック', user, user_result
  end
end

rspec rails

gemインストール

group :development, :test do
  gem 'rspec-rails'
end

ターミナル

// テスト用テーブル作成
bundle exec rake db:migrate RAILS_ENV=test

// rspecインストール
rails g rspec:install

設定

.rspec

--color
--format d // これを追記すると、成功した時もログ出力される
--require spec_helper

spec ファイル作成

各specファイルは以下をrequireする

require 'rails_helper'

テスト

specファイル作成後に、spec実行

rspec