繁体   English   中英

Factory_girl和RSpec:Test:Module的未定义方法“ new”

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM