1

嗨,嗯,在 rails 中使用 rspec,然后创建一个有效用户,如下所示

it "should create a valid user" do
    @user = User.find_or_create_machine_user("test@dllo.no","test_first",     "test_last").should be_an_instance_of User
  end

该测试通过并且工作正常,但是当我包含此部分时,会出现错误

 @batch = FactoryGirl.create(:batch, :file_name => "test_file",
                                  :created_by=> @user)

并说ActiveRecord::AssociationTypeMismatch: User(#65709220) expected, got String(#19934580)。我尝试使用 created_by_id = @user.id.to_int 这也失败了。

图式

class Batch < ActiveRecord::Base
  belongs_to :created_by, :class_name => "User", :foreign_key => :created_by
  attr_accessible :created_by, :file_name

谁能告诉如何克服这个?created_by 接受用户

4

1 回答 1

1

您的规范正在将断言的值分配给@user。@user 因此不是用户。此外,find_or_create_machine_user看起来很奇怪。您应该使用变体find_or_create_by或更好地为用户编写工厂。传递 User 类的这个实际实例应该可以解决问题。

it "should create a valid user" do
  @user = User.find_or_create_machine_user("test@dllo.no","test_first","test_last")
  @user.should be_an_instance_of User
end
于 2013-09-06T06:15:01.697 回答