0

RSpec を使用して、Rails アプリケーションの単体テストを書き出そうとしています。Rails4.0.0と Rspec-Railsを使用しています2.14.6。私のUserモデル:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
    :recoverable, :rememberable, :trackable, :validatable,
    :omniauthable, :omniauth_providers => Settings.authentication.providers.map { |i| i.to_sym }

  validates :password, presence: true, allow_nil: true,
    allow_blank: true, if: :password_required?
  validates :email, presence: true

  def password_required?
    self.providers.empty?
  end

  has_many :providers
  has_one :profile
end

そして私の(魔法の)仕様:

require 'spec_helper'

describe User do
  describe '.new' do
    it 'can create a valid user with no providers'  do
      params = ActionController::Parameters.new(FactoryGirl.attributes_for :user)
      u = User.create params.permit!
      expect(u).to be_new_record
    end
  end

  describe '.build_with_provider' do
    it 'can create a valid user with a provider' do
      puts ap(User)
      provider   = FactoryGirl.create :provider
      oauth_data = FactoryGirl.attributes_for :oauth_data
      u = User.build_from_provider_and_oauth_data provider, oauth_data
      expect(u).to_not be_nil
      expect(u).to be_new_record
      expect(u).to be_valid
      u.save
      expect(u).to be_persisted
    end
  end
end

何か不足している場合は、お知らせください。私の知る限りActionController::Parameters、Rails 4 でパラメータを (ホワイト|ブラック) リストする新しい方法は using です。

4

0 に答える 0