[英]Factory_girl and RSpec: undefined method `new' for Test:Module
我生成了以下脚手架(使用Ruby 2.2.0,rails 4.1.8,postgres):
rails g scaffold Test user:references text:references data:hstore
在我的test_spec.rb中:
require 'rails_helper'
RSpec.describe Test, :type => :model do
describe 'User generates a test' do
before do
@text = create(:text, content: "Cats eat mice")
@user = create(:user)
@test = create(:test)
end
...
当我运行rspec时,测试失败并显示以下消息:
Failure/Error: @test = create(:test)
NoMethodError:
undefined method `new' for Test:Module
# ./spec/models/test_spec.rb:8:in `block (3 levels) in <top (required)>'
当我测试其他模型(用户,文本)时,一切正常,只有测试模型失败。 在rspec文件中调用Test.create(...)也会失败。 在Rails控制台中创建新测试。 任何想法如何解决这一问题?
使用默认配置,Rails定义了模块常量Test
,因此当FactoryGirl将Test.new
作为您的:test
工厂的一部分时,Ruby不会自动加载test.rb
文件。
您可以使用-T
开关在没有Test
基础结构的情况下安装Rails,在这种情况下,它不会定义Test
模块,您应该可以。
如果已经配置了Rails,则可以将以下内容放入rails_helper.rb
文件中以除去Test
常数,并且您也应该没问题:
Object.send(:remove_const, :Test)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.