2016-06-25 7 views
0

私は現在テストスイートを設定しようとしています。個人的にこれを前もって設定したことはありませんが、すでに実装されているプロジェクトに取り組んでいます。私はすべてがセットアップされている必要があると思うが、明らかに私は何かが欠けている。私が逃しているものを指摘する人を探しています。ここに私のコードです。Shoulda-helpers - Rspec

のMODEL SPEC:

require "rails_helper" 

describe Subscriber do 
    context "validations" do 
    it { is_expected.to validate_presence_of(:first_name) } 
    it { is_expected.to validate_presence_of(:last_name) } 
    it { is_expected.to validate_presence_of(:email) } 
    it { is_expected.to validate_presence_of(:password) } 
    end 
end 

MODEL:

class Subscriber < ActiveRecord::Base 
    has_many :comments 

    VALID_EMAIL_REGEX = /\A[\w+\-.][email protected][a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i 
    VALID_PHONE_REGEX = /\d{10}/ 
    validates :first_name, presence: true 
    validates :last_name, presence: true 
    validates :email, 
      :presence => true, 
      :uniqueness => true, 
      :format => VALID_EMAIL_REGEX 
    validates :phone_number, 
      :presence => true, 
      :uniqueness => true, 
      :numericality => true, 
      :format => VALID_PHONE_REGEX 

    def date_joined 
    created_at.strftime("%-m/%-d/%-y") 
    end 

    def expiration_date 
    (created_at + 1.year).strftime("%-m/%-d/%-y") 
    end 

    def days_till_expired 
    ((created_at + 1.year) - DateTime.now).to_i/1.day 
    end 
end 

GEMFILE:

group :development, :test do 
    gem 'byebug' 
    gem "sqlite3" 
    gem "rspec-rails" 
    gem "capybara" 
    gem "factory_girl_rails" 
    gem "simplecov", require: false 
    gem "shoulda-matchers", require: false 
end 

ERROR:

NoMethodError: 
    undefined method `validate_presence_of' for # <RSpec::ExampleGroups::Subscriber::Validations:0x007fc257ea50d0> 
    # ./spec/models/subscriber_spec.rb:12:in `block (3 levels) in <top (required)>' 

エラーはすべての4つで同じです。

私が必要としているのはこれだけです。より多くのコードを表示する必要がある場合はお知らせください。

+0

どうしますか? – CuriousMind

+0

haha​​知っているといいかもしれない。 1秒 – Bitwise

答えて

1

rails_helper.rbに次の行を追加しましたか?

Shoulda::Matchers.configure do |config| 
    config.integrate do |with| 
    # Choose a test framework: 
    with.test_framework :rspec 

    # Choose one or more libraries: 
    with.library :rails 
    end 
end 

また、なぜあなたはfalseを要求していますか?あなたはgemfileからrequire falseを削除する必要があります。 GEMFILE:

group :development, :test do 
    gem 'byebug' 
    gem "sqlite3" 
    gem "rspec-rails" 
    gem "capybara" 
    gem "factory_girl_rails" 
    gem "simplecov", require: false 
    gem "shoulda-matchers", require: false 
end 
+0

助けてくれてありがとう。最初に2つのことが必要です:私がこれで見つけたプロジェクトにはfalseがありました。私は私の前にそのプロセスをエミュレートしようとする以外の特別な理由でそれを含めませんでした。二番目 - 私はファイルにこれをどこに入れますか? – Bitwise

+0

また、これをファイルに追加すると、このエラーが発生します。 'uninitialized constant Shoulda(NameError)' – Bitwise

+0

gemfileにrequire:falseがあるため、 'Shoulda'が読み込まれません。あなたはそれを削除する必要があります – CuriousMind