应该帮助 - Rspec

时间:2016-06-25 03:14:32

标签: ruby-on-rails ruby 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

模特:

    class Subscriber < ActiveRecord::Base
  has_many :comments

  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[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

错误:

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)>'

所有四个错误都是一样的。

据我所知,这就是我所需要的一切?如果您需要查看更多代码,请告诉我?

1 个答案:

答案 0 :(得分: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
相关问题