0

所以我第一次尝试使用 Rspec 在我的应用程序上测试模型,但我似乎无法让它工作。我正在使用 FactoryGirl 创建模型的实例。这是我的规格:

describe 'adding a model instance' do
    before :each do
        @fake = FactoryGirl.create :user
    end

    it 'should add a new user to the database' do
        User.should_receive(:create).with(@fake).and_recieve@fake)
    end

end

这是我的模型:

class User < ActiveRecord::Base
attr_accessible :username, :name, :email, :email_confirmation, :password, :password_confirmation, :bio
has_many :comments #comments user has posted on ideas
has_many :commented_ideas, :class_name => 'Idea', :through => :comments #ideas user has commented on
has_many :ideas #ideas user has posted

validates :password, :email, :confirmation => true
validates :username, :email, :password, :name, :presence => true
# validates :username, :email, :unique => true
end

以及我得到的错误:

Failure/Error: User.should_receive(:create!).with('username' => 'testUser', 'user_id' => "1").and_return(true)
   (<User(id: integer, username: string, name: string, email: string, password: string, created_at: datetime, updated_at: datetime, bio: text) (class)>).create!({"username"=>"testUser", "user_id"=>"1"})
       expected: 1 time
       received: 0 times

有人可以解释为什么这不起作用吗?

4

1 回答 1

1

User#create在您的代码中的任何地方都没有调用,因此未达到预期。我认为您的误解是由于将真实班级与工厂混淆所致。我不知道 FactoryGirl 在内部做什么来创建记录,但它似乎不是#create。

于 2013-04-11T22:12:12.863 回答