在FactoryGirl.build上调用should_not_be_valid时发生RSpec NoMethodError

时间:2014-02-11 07:05:20

标签: ruby-on-rails rspec factory-bot

在我的RSpec user_spec.rb中,我的一个FactoryGirl工厂似乎有效,我可以在其上调用should be_valid,此测试将通过(如果我在工厂中放入一个空字符串将会中断{{ 1}})。

user_name

但是,当我在describe User do it "has a valid factory" do # should be_valid works fine FactoryGirl.create(:user).should be_valid end it "is invalid without a name" do # should_not_be_valid throws a NoMethodError FactoryGirl.build(:user, :user_name => nil).should_not_be_valid end end 上调用上述should_not_be_valid时,测试失败:

FactoryGirl.build

当它应该通过时,因为空白 1) User is invalid without a name Failure/Error: FactoryGirl.build(:user, :user_name => nil).should_not_be_valid NoMethodError: undefined method `should_not_be_valid' for #<User id: nil, user_name: nil, created_at: nil, updated_at: nil> # ./spec/models/use 无效。这就是我在工厂里的所有内容.rb:

user_name

我的用户模型:

FactoryGirl.define do  
  factory :user do
    user_name "Foo Bar"
  end
end

class User < ActiveRecord::Base has_one :musician validates :user_name, presence: true end 怎么可能有效,但should be_valid会抛出should_not_be_valid

我真的很感激任何帮助!我正在运行Rails 4,NoMethodErrorgem "rspec-rails", "~> 2.14.1"

试图将这个问题困惑一段时间但没有成功......

1 个答案:

答案 0 :(得分:3)

should_notbe_valid之间使用空格:

FactoryGirl.build(:user, :user_name => nil).should_not be_valid