嗨,你在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接受用户
答案 0 :(得分:1)
您的规范是将断言的值分配给@user。因此,@ user不是用户。此外,find_or_create_machine_user
看起来很奇怪。您应该使用find_or_create_by
或更好的变体为User编写工厂。传递这个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