2014-01-29 31 views
-1

所以我正在处理Rspec测试和FactoryGirl。对于创建或构建对象时FactoryGirl的内部工作情况,我仍然有点困惑。Rspec在Rails中的FactoryGirl未知方法错误

我有几个测试结果与此类似:

Failure/Error: @ticket = FactoryGirl.create(:ticket) 
NoMethodError: 
    undefined method `user=' for #<Ticket:0x007f1455e72fc8> 
# ./spec/models/ticket_spec.rb:38:in `block (3 levels) in <top (required)>' 

看起来好像它试图票的实例分配给用户,但为什么呢?我会在哪里开始尝试修复它?

更新

我刚开始熟悉这个代码库,所以我才意识到没有票出厂或用户工厂。这种创建测试票的方式不正确吗?对不起,我仍然非常青睐FactoryGirl和一般的测试框架。

+1

请发表您的'ticket'和'user'工厂包括'ticket_spec.rb' – vee

+0

我只是要求一个建议,因为到哪儿去。我无法发布工作代码队友。 – onetwopunch

+0

如果您打算放弃,请让我知道为什么。 – onetwopunch

回答

1

您需要定义您的工厂,很可能在spec/factories.rbspec/factories文件夹中。更多信息:https://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md

# spec/factories.rb 

factory :user do 
    # assuming this passes model validations 
end 

factory :ticket do 
    # assuming this passes model validations 
    user 
end 
+0

谢谢我刚在该文件中找到了工厂。我意识到问题是,虽然有一个用户类,但是Ticket实例将其称为“所有者”。即belongs_to:owner,class_name:'User'。有没有办法在工厂中定义? – onetwopunch

+0

我相信你可以像这样定义它'工厂:所有者,类:用户' – rich

+0

谢谢!我没有尝试使用你的方法,因为用户工厂中已经有一个别名。即。工厂:用户,别名:[:owner]。但将'用户'更改为'所有者'感谢您的帮助! – onetwopunch

相关问题